|
35694
|
mortmobile by @quad_bucket71 | Stardance
|
quad_bucket71
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mortmobile by @quad_bucket71 | Stardance
|
1793414989.1176
|
1794019789.1176
|
|
18600
|
morse code translator by @hackervyralz | Stardance
|
hackervyralz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: morse code translator by @hackervyralz | St Title: morse code translator by @hackervyralz | Stardance...
|
1793191928.3760004
|
1793796728.3760004
|
|
33704
|
morse code onekey by @Pery | Stardance
|
Pery
|
1
|
2.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T17:15:10Z", "hours": 2.0, "multiplier": 5.44, "payout": 10, "blessing": "neutral", "text": "Project finally done! i will add this project to my personal site too! Hope yall like it and this time i tried my best to make the design a little nice", "repo": "https://github.com/davidperyro-stack/Morse-code", "demo": "https://davidperyro-stack.github.io/Morse-code/"}]...
|
[{"post_id": 26690, "ts": "202 [{"post_id": 26690, "ts": "2026-07-11T16:58:40Z", "hours": 0.5244, "text": "adding everything but a “/” qwq (also added beep)"}, {"post_id": 26650, "ts": "2026-07-11T16:16:07Z", "hours": 0.5942, "text": "Added translator and changed the look of the site :3"}, {"post_id": 26619, "ts": "2026-07-11T15:26:45Z", "hours": 0.7706, "text": "trying to add an translator (and maybe space,aka “/”)"}]...
|
Title: morse code onekey by @Pery | Stardance
Dev Title: morse code onekey by @Pery | Stardance
Devlogs:
trying to add an translator (and maybe space,aka “/”)
Added translator and changed the look of the site :3
adding everything but a “/” qwq (also added beep)
Ships:
Project finally done! i will add this project to my personal site too! Hope yall like it and this time i tried my best to make the design a little nice...
|
1793497938.7319884
|
1793584338.7319884
|
|
51102
|
morphcpu by @ranveergill | Stardance
|
ranveergill
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: morphcpu by @ranveergill | Stardance
|
1792954452.4299376
|
1793818452.4299376
|
|
55678
|
morp? by @wxie223 | Stardance
|
wxie223
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: morp? by @wxie223 | Stardance
|
1792630179.0468035
|
1793494179.0468035
|
|
62764
|
moon os by @fab | Stardance
|
fab
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: moon os by @fab | Stardance
|
1793047777.7140381
|
1793652577.7140381
|
|
68954
|
moon book by @bhumika_2oo7 | Stardance
|
bhumika_2oo7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: moon book by @bhumika_2oo7 | Stardance
|
1793127245.7355611
|
1793991245.7355611
|
|
57351
|
mood island v2 by @pepper | Stardance
|
pepper
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mood island v2 by @pepper | Stardance
|
1793436484.3717825
|
1794041284.3717825
|
|
23404
|
monte carlo stock simulator by @aar4vxx | Stardanc monte carlo stock simulator by @aar4vxx | Stardance...
|
aar4vxx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monte carlo stock simulator by @aar4vxx | S Title: monte carlo stock simulator by @aar4vxx | Stardance...
|
1793217251.3861985
|
1793822051.3861985
|
|
13189
|
monstercar by @tanishka | Stardance
|
tanishka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monstercar by @tanishka | Stardance
|
1792886085.9799368
|
1793750085.9799368
|
|
59946
|
monsOS by @mons_reinus | Stardance
|
mons_reinus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monsOS by @mons_reinus | Stardance
|
1793030000.2926328
|
1793634800.2926328
|
|
56805
|
monopoly but smart by @abderrahmen_bouraoui_ts | S monopoly but smart by @abderrahmen_bouraoui_ts | Stardance...
|
abderrahmen_bouraoui_ts
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monopoly but smart by @abderrahmen_bouraoui Title: monopoly but smart by @abderrahmen_bouraoui_ts | Stardance...
|
1792925351.56998
|
1793789351.56998
|
|
59105
|
monochrome by @jworden | Stardance
|
jworden
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T20:50:21Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a monochrome themed-minimalistic astronomy picture of the day site. the only challanges were getting the API to work, using vite, and getting my deploy.yml to work", "repo": "https://github.com/venjae/nasa-apod", "demo": "https://venjae.github.io/nasa-apod/"}]...
|
[{"post_id": 63160, "ts": "202 [{"post_id": 63160, "ts": "2026-09-06T20:08:04Z", "hours": 1.0028, "text": "finished site, minimalist monochrome theme"}]...
|
Title: monochrome by @jworden | Stardance
Devlogs Title: monochrome by @jworden | Stardance
Devlogs:
finished site, minimalist monochrome theme
Ships:
I made a monochrome themed-minimalistic astronomy picture of the day site. the only challanges were getting the API to work, using vite, and getting my deploy.yml to work...
|
1793523295.8087523
|
1793609695.8087523
|
|
23699
|
monoOS by @minicpm | Stardance
|
minicpm
|
0
|
1.63
|
0
|
[]
|
[{"post_id": 13413, "ts": "202 [{"post_id": 13413, "ts": "2026-06-21T23:25:01Z", "hours": 1.6325, "text": "today I started working on my webOS. It’s not very good yet, but I have a good system in place for adding new apps, and it looks pretty good so far. tomorrow I will add an icon system for apps and add more functionality."}]...
|
Title: monoOS by @minicpm | Stardance
Devlogs:
to Title: monoOS by @minicpm | Stardance
Devlogs:
today I started working on my webOS. It’s not very good yet, but I have a good system in place for adding new apps, and it looks pretty good so far. tomorrow I will add an icon system for apps and add more functionality....
|
1793552233.2818
|
1794157033.2818
|
|
62706
|
mono os by @sl | Stardance
|
sl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mono os by @sl | Stardance
|
1793047740.236623
|
1793652540.236623
|
|
14162
|
monkeytime by @kikkudayo | Stardance
|
kikkudayo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monkeytime by @kikkudayo | Stardance
|
1793407821.7732131
|
1794012621.7732131
|
|
37972
|
monkeytab by @simonproyt | Stardance
|
simonproyt
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T09:10:34Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So this was my first experience with svelte after using nextjs and vue most of the time for web projects so this was kinda new but i think this turned out as a great first project", "repo": "https://github.com/simonproyt/monkeytab", "demo": "https://monkeytab.ertekessimon.workers.dev/"}]...
|
[{"post_id": 34510, "ts": "202 [{"post_id": 34510, "ts": "2026-07-25T09:08:34Z", "hours": 0.6458, "text": "Final devlog So I updated the README to make it even easier for ppl to deploy it and deployed it myself to cf workers but thats it nothing more in this final devlog"}, {"post_id": 33921, "ts": "2026-07-24T07:08:17Z", "hours": 1.7744, "text": "A new widget So I decided to add this new weather widget that uses the open meteo api because thats the only good api that is free and doesnt need an api key"}, {"post_id": 33318, "ts": "2026-07-23T03:51:56Z", "hours": 1.0778, "text": "Sorry everyone if i made any like grammatical or whatever mistakes in this devlog i couldnt sleep at night and i was like half asleep First widget added the clock So i taught adding a liquid glass clock widget was an easy thing i was so wrong so originally i wanted it 3d with tree.js but that didnt work because it always had issues like it not scaling properly to browser size and stuff so sadly i had to do with this clock with borders it looks okay but it isnt the original design i wanted with no borders and stuff"}, {"post_id": 32991, "ts": "2026-07-22T14:51:32Z", "hours": 0.9333, "text": "Devlog #2 So now the project is starting to look better So i added support for getting apod image of the dayy using the nasa api and a proxy because without the api proxy i would have revealed my api keys to every user and i didnt want to do that so thats why i built in add the other thing added was a choosing the accent color of the search bar based on the images color data Thank you for reading my devlog"}, {"post_id": 32860, "ts": "2026-07-22T09:14:47Z", "hours": 1.0028, "text": "First devlog for this project So i created the project using sveltekit and created a base prototype but nothing more this needs a lot work to make it finished and not basic"}]...
|
Title: monkeytab by @simonproyt | Stardance
Devlo Title: monkeytab by @simonproyt | Stardance
Devlogs:
First devlog for this project So i created the project using sveltekit and created a base prototype but nothing more this needs a lot work to make it finished and not basic
Devlog #2 So now the project is starting to look better So i added support for getting apod image of the dayy using the nasa api and a proxy because without the api proxy i would have revealed my api keys to every user and i didnt want to do that so thats why i built in add the other thing added was a choosing the accent color of the search bar based on the images color data Thank you for reading my devlog
Sorry everyone if i made any like grammatical or whatever mistakes in this devlog i couldnt sleep at night and i was like half asleep First widget added the clock So i taught adding a liquid glass clock widget was an easy thing i was so wrong so originally i wanted it 3d with tree.js but that didnt work because it always had issues like it not scaling properly to browser size and stuff so sadly i had to do with this clock with borders it looks okay but it isnt the original design i wanted with no borders and stuff
A new widget So I decided to add this new weather widget that uses the open meteo api because thats the only good api that is free and doesnt need an api key
Final devlog So I updated the README to make it even easier for ppl to deploy it and deployed it myself to cf workers but thats it nothing more in this final devlog
Ships:
So this was my first experience with svelte after using nextjs and vue most of the time for web projects so this was kinda new but i think this turned out as a great first project...
|
1793476447.5152996
|
1793562847.5152996
|
|
12140
|
monkeypad by @simonproyt | Stardance
|
simonproyt
|
0
|
1.27
|
0
|
[]
|
[{"post_id": 5593, "ts": "2026 [{"post_id": 5593, "ts": "2026-06-09T13:25:37Z", "hours": 0.8439, "text": "I switched from kmk to qmk for the firmware for the macropad and added an oled screen ui that shows pc ram and cpu usage percentage and song data that is being transmitted to the macropad via a companion app written in go on the host system"}, {"post_id": 4869, "ts": "2026-06-08T12:43:10Z", "hours": 0.4311, "text": "So we manged to make a good pcb in KiCad after a few hours but sadly the hackatime companion app for KiCad was kinda broken so it didnt count towards my daily goals sadly"}]...
|
Title: monkeypad by @simonproyt | Stardance
Devlo Title: monkeypad by @simonproyt | Stardance
Devlogs:
So we manged to make a good pcb in KiCad after a few hours but sadly the hackatime companion app for KiCad was kinda broken so it didnt count towards my daily goals sadly
I switched from kmk to qmk for the firmware for the macropad and added an oled screen ui that shows pc ram and cpu usage percentage and song data that is being transmitted to the macropad via a companion app written in go on the host system...
|
1792806811.421975
|
1793411611.421975
|
|
27065
|
monkeyos by @simonproyt | Stardance
|
simonproyt
|
2
|
25.0
|
177
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T20:58:19Z", "hours": 18.0, "multiplier": 9.98, "payout": 177, "blessing": "neutral", "text": "I finally turned the concept into a more usable tech demo that has some features and focused on making apps that demo the oses underlying apis in a simple way and polishing the whole os to not have that unfinished concept feeling also if you want to try it out you might need to enable webgpu in your browsers flags settings if its not enabled by default. Thank you for reading and I hope that you found my projects interesting!", "repo": "https://github.com/simonproyt/monkeyos", "demo": "https://simonproyt.github.io/monkeyos/"}, {"ship_num": 2, "ts": "2026-07-02T14:29:44Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So i think this is good as an initial version but i have a lot of work to do on the rendering engine and adding more apps because its kinda bare bones but i will be definitely flushing it out more and making the ui more pretty", "repo": "https://github.com/simonproyt/monkeyos", "demo": "https://simonproyt.github.io/monkeyos/"}]...
|
[{"post_id": 31998, "ts": "202 [{"post_id": 31998, "ts": "2026-07-20T20:46:58Z", "hours": 3.4631, "text": "Backgrounds finally so one of the things missing from the os i think was like some pretty backgrounds cause the os only had that bland dark blue/grey ish simple one color background support but i changed that now and added support for random image background support with NASA APOD or Picsum random as the selectable options in the new settings app"}, {"post_id": 31110, "ts": "2026-07-19T07:45:09Z", "hours": 3.0192, "text": "First game Added snake to the os as a cool way to demo all the rendering sound and storage apis in a fun way and added a few underlying kernel and window manager changes like increasing the oses fps target from 2 to 30 because it was so laggy for games"}, {"post_id": 28805, "ts": "2026-07-15T09:36:37Z", "hours": 2.2514, "text": "More audio stuff piano It’s a piano what more could i say about it midiplayer It’s a retro chiptune style midi player to demo the oses audio capabilities with a cool visualizer"}, {"post_id": 27598, "ts": "2026-07-13T10:16:20Z", "hours": 2.3033, "text": "Added some multimedia features and a basic networking api beep Just a simple pc speaker like beep to test if the sound api is working or not imgview An image viewer thats it nothing special fetch A curl like command that uses the new networking api to fetch stuff trough the browser or if that fails because of crocs trough a proxy api"}, {"post_id": 26606, "ts": "2026-07-11T15:14:12Z", "hours": 1.0986, "text": "Added 3 new commands to the cli mv and grep: its preatty self explanatory what it does if you ever used linux or any other unix like operating system for that matter man: this was kinda hard at first finding where you can find online versions of the manpages from linux that the os can easily get over an api but after a bit of searching i found the tldr pages project and uses that and the github api to download the pages and then strip out the markdown syntax from them and displays them in the terminal."}, {"post_id": 26087, "ts": "2026-07-10T17:50:55Z", "hours": 2.3481, "text": "Added two new apps to the os so after having the libui ui layer implemented i decided to add more apps to demo it like a notepad and a basic file manager"}, {"post_id": 24708, "ts": "2026-07-08T14:01:42Z", "hours": 3.8514, "text": "A pretty big update so after a lot of work i finally added a few features that the os have been missing for ages like a gui library so there could be gui apps not just terminal stuff and a demo calculator app text rendering support to the webgpu engine aero snap like window snapping a dock for window management with a clock and a menu to launch apps Thank you for reading my devlog"}, {"post_id": 20790, "ts": "2026-07-02T14:22:45Z", "hours": 0.9364, "text": "Worked on a ci pipeline to deploy the project automatically to github pages and added a few visual fixes to the project"}, {"post_id": 20013, "ts": "2026-07-01T14:41:16Z", "hours": 1.2564, "text": "Multi windowing is finally supported now but the gui still looks kinda basic the webgpu rendering engine behind everything still doesn’t support text or image rendering so i will be working on that and adding more apps because we only have the terminal"}, {"post_id": 19210, "ts": "2026-06-30T14:03:35Z", "hours": 2.1317, "text": "So we have finally working unix style pipes added to the system and a lot of underlying changes in the kernel for more performance improvements cause the older versions were kinda slow and im trying to fix that"}, {"post_id": 17568, "ts": "2026-06-28T12:24:53Z", "hours": 2.5189, "text": "So this is my first devlog for this project the idea is that to build a rust and wasm based web os that because i taught that using standard html 5 + js would be kinda boring because everyone does that i wanted to do something special so here is the current state of the project: Whats working basic filesystem basic process management a basic shell with rust uutils backed commands Thanks for reading my devlog"}]...
|
Title: monkeyos by @simonproyt | Stardance
Devlog Title: monkeyos by @simonproyt | Stardance
Devlogs:
So this is my first devlog for this project the idea is that to build a rust and wasm based web os that because i taught that using standard html 5 + js would be kinda boring because everyone does that i wanted to do something special so here is the current state of the project: Whats working basic filesystem basic process management a basic shell with rust uutils backed commands Thanks for reading my devlog
So we have finally working unix style pipes added to the system and a lot of underlying changes in the kernel for more performance improvements cause the older versions were kinda slow and im trying to fix that
Multi windowing is finally supported now but the gui still looks kinda basic the webgpu rendering engine behind everything still doesn’t support text or image rendering so i will be working on that and adding more apps because we only have the terminal
Worked on a ci pipeline to deploy the project automatically to github pages and added a few visual fixes to the project
A pretty big update so after a lot of work i finally added a few features that the os have been missing for ages like a gui library so there could be gui apps not just terminal stuff and a demo calculator app text rendering support to the webgpu engine aero snap like window snapping a dock for window management with a clock and a menu to launch apps Thank you for reading my devlog
Added two new apps to the os so after having the libui ui layer implemented i decided to add more apps to demo it like a notepad and a basic file manager
Added 3 new commands to the cli mv and grep: its preatty self explanatory what it does if you ever used linux or any other unix like operating system for that matter man: this was kinda hard at first finding where you can find online versions of the manpages from linux that the os can easily get over an api but after a bit of searching i found the tldr pages project and uses that and the github api to download the pages and then strip out the markdown syntax from them and displays them in the terminal.
Added some multimedia features and a basic networking api beep Just a simple pc speaker like beep to test if the sound api is working or not imgview An image viewer thats it nothing special fetch A curl like command that uses the new networking api to fetch stuff trough the browser or if that fails because of crocs trough a proxy api
More audio stuff piano It’s a piano what more could i say about it midiplayer It’s a retro chiptune style midi player to demo the oses audio capabilities with a cool visualizer
First game Added snake to the os as a cool way to demo all the rendering sound and storage apis in a fun way and added a few underlying kernel and window manager changes like increasing the oses fps target from 2 to 30 because it was so laggy for games
Backgrounds finally so one of the things missing from the os i think was like some pretty backgrounds cause the os only had that bland dark blue/grey ish simple one color background support but i changed that now and added support for random image background support with NASA APOD or Picsum random as the selectable options in the new settings app
Ships:
So i think this is good as an initial version but i have a lot of work to do on the rendering engine and adding more apps because its kinda bare bones but i will be definitely flushing it out more and making the ui more pretty
I finally turned the concept into a more usable tech demo that has some features and focused on making apps that demo the oses underlying apis in a simple way and polishing the whole os to not have that unfinished concept feeling also if you want to try it out you might need to enable webgpu in your browsers flags settings if its not enabled by default. Thank you for reading and I hope that you found my projects interesting!...
|
1793476400.7835238
|
1793562800.7835238
|
|
35120
|
monkey club by @MonkeyKing | Stardance
|
MonkeyKing
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monkey club by @MonkeyKing | Stardance
|
1793029750.2254624
|
1793634550.2254624
|
|
63520
|
moneyMateMathBoard by @teerth | Stardance
|
teerth
|
0
|
4.26
|
0
|
[]
|
[{"post_id": 70605, "ts": "202 [{"post_id": 70605, "ts": "2026-09-19T13:17:37Z", "hours": 1.8075, "text": "PCBMAXINGG!!! PCB Ready gang!"}, {"post_id": 70517, "ts": "2026-09-19T09:48:36Z", "hours": 2.4506, "text": "moneyMateMathBoard FTW!!! 💵 What is MMMB Its a handy device to track your expenses as you go! Completed the schematic, now onto the board design (BEST PART IMO!!)"}]...
|
Title: moneyMateMathBoard by @teerth | Stardance
Title: moneyMateMathBoard by @teerth | Stardance
Devlogs:
moneyMateMathBoard FTW!!! 💵 What is MMMB Its a handy device to track your expenses as you go! Completed the schematic, now onto the board design (BEST PART IMO!!)
PCBMAXINGG!!! PCB Ready gang!...
|
1793051527.9297304
|
1793656327.9297304
|
|
16464
|
money mentor by @rohondutta02 | Stardance
|
rohondutta02
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: money mentor by @rohondutta02 | Stardance
|
1793371785.9151664
|
1793976585.9151664
|
|
24392
|
money clicker! by @akr0002 | Stardance
|
akr0002
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: money clicker! by @akr0002 | Stardance
|
1793400595.5987287
|
1794005395.5987287
|
|
40657
|
monarch butterfly identifier by @estherkong | Star monarch butterfly identifier by @estherkong | Stardance...
|
estherkong
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monarch butterfly identifier by @estherkong Title: monarch butterfly identifier by @estherkong | Stardance...
|
1793516183.8520918
|
1794120983.8520918
|
|
41161
|
mommy.ai by @danylo_martynevych | Stardance
|
danylo_martynevych
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mommy.ai by @danylo_martynevych | Stardance
|
1793544827.0610769
|
1794149627.0610769
|
|
47008
|
moku Assistant by @ArslaanPathan | Stardance
|
ArslaanPathan
|
0
|
6.48
|
0
|
[]
|
[{"post_id": 48003, "ts": "202 [{"post_id": 48003, "ts": "2026-08-16T08:54:45Z", "hours": 1.0194, "text": "JNI is very confusing I spent some time getting a Foreground Service to run so that I can start working on the real assistant code inside of it It was a pretty big headache of wrapping my head around JNI and to be honest I still don’t understand it, most of my JNI stuff is just heavily modified examples and pasted from Stack Overflow Now that I’ve got it working, the next step is to handle audio and actually send it through Vosk!!!"}, {"post_id": 47906, "ts": "2026-08-16T05:37:10Z", "hours": 0.7858, "text": "To integrate Vosk properly with the new Gradle build system, I had to switch from ndk-build to CMake and add a custom task in app/build.gradle that extracts libvosk.so from the Vosk AAR and fetches vosk_api.h into the include directories ^_^ Spent a bit of time getting this to work and the app now compiles properly, linking against Vosk, with the new Gradle + CMake build system!!!"}, {"post_id": 47877, "ts": "2026-08-16T04:20:02Z", "hours": 0.8086, "text": "It turns out I can’t make an Android Foreground Service without a little bit of Java/Kotlin, so I spent a hot minute migrating the entire build system to Gradle so that I can write a few Java service wrappers. Along the way, I had some issues with Android SDK and musl libc, so the build now runs in a Docker container with docker-compose."}, {"post_id": 46817, "ts": "2026-08-14T10:30:40Z", "hours": 0.3536, "text": "Did more build system things"}, {"post_id": 46806, "ts": "2026-08-14T09:56:16Z", "hours": 0.75, "text": "Spent a little bit of time trying to figure out licensing for Vosk and figuring out how to integrate the Vosk shared library into my application ^_^ Licensing is still confusing but I think I have it mostly figured out! I’ve got the Makefile to download the Vosk AAR and extract the shared library from it, and I’ve also got Android.mk (ndk-build) to link against libvosk.so! Oh also I made the screen red instead of green because I can™️"}, {"post_id": 46761, "ts": "2026-08-14T07:52:36Z", "hours": 0.3483, "text": "I got it to render a green screen to the buffer! Next step is probably to make it start processing audio and the actual asisstant part because the UI can be done last At the moment I might just use color screen indicators (?)"}, {"post_id": 46223, "ts": "2026-08-13T09:33:03Z", "hours": 1.985, "text": "I GOT IT TO LAUNCH IT LAUNCHES WITH THE C BOILERPLATE CODE For some reason rendering doesn’t work yet (Unable to lock window buffer)"}, {"post_id": 45682, "ts": "2026-08-12T10:23:03Z", "hours": 0.4278, "text": "I spent a bit of time getting the build system and boilerplate to work, and I now have a working Makefile that produces a signed APK with the Android NDK (ndk-build) from my C code!"}]...
|
Title: moku Assistant by @ArslaanPathan | Stardanc Title: moku Assistant by @ArslaanPathan | Stardance
Devlogs:
I spent a bit of time getting the build system and boilerplate to work, and I now have a working Makefile that produces a signed APK with the Android NDK (ndk-build) from my C code!
I GOT IT TO LAUNCH IT LAUNCHES WITH THE C BOILERPLATE CODE For some reason rendering doesn’t work yet (Unable to lock window buffer)
I got it to render a green screen to the buffer! Next step is probably to make it start processing audio and the actual asisstant part because the UI can be done last At the moment I might just use color screen indicators (?)
Spent a little bit of time trying to figure out licensing for Vosk and figuring out how to integrate the Vosk shared library into my application ^_^ Licensing is still confusing but I think I have it mostly figured out! I’ve got the Makefile to download the Vosk AAR and extract the shared library from it, and I’ve also got Android.mk (ndk-build) to link against libvosk.so! Oh also I made the screen red instead of green because I can™️
Did more build system things
It turns out I can’t make an Android Foreground Service without a little bit of Java/Kotlin, so I spent a hot minute migrating the entire build system to Gradle so that I can write a few Java service wrappers. Along the way, I had some issues with Android SDK and musl libc, so the build now runs in a Docker container with docker-compose.
To integrate Vosk properly with the new Gradle build system, I had to switch from ndk-build to CMake and add a custom task in app/build.gradle that extracts libvosk.so from the Vosk AAR and fetches vosk_api.h into the include directories ^_^ Spent a bit of time getting this to work and the app now compiles properly, linking against Vosk, with the new Gradle + CMake build system!!!
JNI is very confusing I spent some time getting a Foreground Service to run so that I can start working on the real assistant code inside of it It was a pretty big headache of wrapping my head around JNI and to be honest I still don’t understand it, most of my JNI stuff is just heavily modified examples and pasted from Stack Overflow Now that I’ve got it working, the next step is to handle audio and actually send it through Vosk!!!...
|
1793163286.6629312
|
1793768086.6629312
|
|
45211
|
moggy by @folsense | Stardance
|
folsense
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: moggy by @folsense | Stardance
|
1792932837.192764
|
1793796837.192764
|
|
22090
|
mogged by @eli_ozcan | Stardance
|
eli_ozcan
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T20:00:38Z", "hours": 10.0, "multiplier": 12.08, "payout": 0, "blessing": "neutral", "text": "Mogged is a fun amalgamation of Omoggle and Mogwars with a custom research-based mogging backend. This is 10000% for funsies because I wanted to see how I compared to other people without yk having to involve other people. The app takes in photo/video feed and runs Google’s Mediapipe on it to find facial landmarks and then uses custom algorithm code stolen from Omoggle and Mogwars to calculate a facial score. The backend named after me (“Eli”) runs it’s own estimations and takes into account facial color and the full 3D reconstruction of one’s face. Below is a photo I took at school of my project working.", "repo": "https://github.com/elijah629/mogged", "demo": "https://mogged.eli.best"}]...
|
[{"post_id": 33876, "ts": "202 [{"post_id": 33876, "ts": "2026-07-24T04:35:23Z", "hours": 4.0914, "text": "okay so omoggle/mogwars was cool but this is cooler: i noticed that those “backends” only ran on a static frame of your face and only measured landmarks. I decided to make one which bases it off of a 3D scan as well as texture information to estimate skincare. After some research, I found 3DDFA , a small model which can reconstruct a 3D model of a face from photos. the app first takes 7 poses by asking you to move your camera and then passes them all into the model. (120x120x3b tensor). The model gives 62 parameters per pose, and then the app takes the median identity-shape parameters across all views -> BFM2009 decoder -> 68 points used to calculate all the structural metrics. then it uses the texture of the face that’s not in the eyes or mouth and samples them for clarity, eveness, texture, exposure, sharpness, etc. takes the median of that and then calculates a skin value. exact weights for them are found in the code."}, {"post_id": 21869, "ts": "2026-07-04T01:10:27Z", "hours": 5.9342, "text": "Mogged sorry for the lackluster devlog quality, my >4k char devlog was js deleted and i’m pissed inspo a very chopped aquantience couldn’t believe how chopped he was and I wanted to prove it to him. however, he didn’t want to go into an omoggle match w me so I needed something that supported image upload motivation popular websites that do an omoggle-style ranking either are not accurate to omoggle or send your photo off-device to a vLLM or server, which I don’t want criteria both image and photo support privacy first all local on-device scoring accurate to the two popular mogging platforms I found, mogwars and omoggle research found an excellent (althrough made by ai) writeup on omoggle. This shows that Omoggle uses Google’s Mediapipe FaceLandmarker . I knew the data fed into an algorithim but I didn’t know how the facial data was turned into a score so I got a codex agent to analyze the bundled JS of omoggle and mogwars to reverse-engineer the scoring mechanism. It came back with the following: that both websites use the same metrics but process them differently into a score the way metrics (symmetry, jawline, etc.) are calculated from the landmarks and how each platform uses them for sake of brevity (character limit) I will not be describing exactly how each platform works nor how the metrics are calculated in specific, for those interested, check out src/lib/scoring . I promise I’m not larping, I actually understand how it works lol. implementation I then took all of that as well as some Google-given examples for the landmarking API and created a new NextJS + Shadcn + Tailwind v4 project. I first wrote the landmarking system and then the scoring system based on the output of the landmarker. After, I made a temporary UI with google stitch and got codex to wire everything together. demo available at https://mogged.eli.best"}]...
|
Title: mogged by @eli_ozcan | Stardance
Devlogs:
Title: mogged by @eli_ozcan | Stardance
Devlogs:
Mogged sorry for the lackluster devlog quality, my >4k char devlog was js deleted and i’m pissed inspo a very chopped aquantience couldn’t believe how chopped he was and I wanted to prove it to him. however, he didn’t want to go into an omoggle match w me so I needed something that supported image upload motivation popular websites that do an omoggle-style ranking either are not accurate to omoggle or send your photo off-device to a vLLM or server, which I don’t want criteria both image and photo support privacy first all local on-device scoring accurate to the two popular mogging platforms I found, mogwars and omoggle research found an excellent (althrough made by ai) writeup on omoggle. This shows that Omoggle uses Google’s Mediapipe FaceLandmarker . I knew the data fed into an algorithim but I didn’t know how the facial data was turned into a score so I got a codex agent to analyze the bundled JS of omoggle and mogwars to reverse-engineer the scoring mechanism. It came back with the following: that both websites use the same metrics but process them differently into a score the way metrics (symmetry, jawline, etc.) are calculated from the landmarks and how each platform uses them for sake of brevity (character limit) I will not be describing exactly how each platform works nor how the metrics are calculated in specific, for those interested, check out src/lib/scoring . I promise I’m not larping, I actually understand how it works lol. implementation I then took all of that as well as some Google-given examples for the landmarking API and created a new NextJS + Shadcn + Tailwind v4 project. I first wrote the landmarking system and then the scoring system based on the output of the landmarker. After, I made a temporary UI with google stitch and got codex to wire everything together. demo available at https://mogged.eli.best
okay so omoggle/mogwars was cool but this is cooler: i noticed that those “backends” only ran on a static frame of your face and only measured landmarks. I decided to make one which bases it off of a 3D scan as well as texture information to estimate skincare. After some research, I found 3DDFA , a small model which can reconstruct a 3D model of a face from photos. the app first takes 7 poses by asking you to move your camera and then passes them all into the model. (120x120x3b tensor). The model gives 62 parameters per pose, and then the app takes the median identity-shape parameters across all views -> BFM2009 decoder -> 68 points used to calculate all the structural metrics. then it uses the texture of the face that’s not in the eyes or mouth and samples them for clarity, eveness, texture, exposure, sharpness, etc. takes the median of that and then calculates a skin value. exact weights for them are found in the code.
Ships:
Mogged is a fun amalgamation of Omoggle and Mogwars with a custom research-based mogging backend. This is 10000% for funsies because I wanted to see how I compared to other people without yk having to involve other people. The app takes in photo/video feed and runs Google’s Mediapipe on it to find facial landmarks and then uses custom algorithm code stolen from Omoggle and Mogwars to calculate a facial score. The backend named after me (“Eli”) runs it’s own estimations and takes into account facial color and the full 3D reconstruction of one’s face. Below is a photo I took at school of my project working....
|
1793465389.7323954
|
1793551789.7323954
|
|
70234
|
mogbot by @reyaanshgadia | Stardance
|
reyaanshgadia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mogbot by @reyaanshgadia | Stardance
|
1792961331.1829693
|
1793566131.1829693
|
|
38071
|
modulos by @quesada | Stardance
|
quesada
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: modulos by @quesada | Stardance
|
1793281712.3200948
|
1793886512.3200948
|
|
61802
|
modular universal devtool by @Lithium18 | Stardanc modular universal devtool by @Lithium18 | Stardance...
|
Lithium18
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: modular universal devtool by @Lithium18 | S Title: modular universal devtool by @Lithium18 | Stardance...
|
1793040861.1951003
|
1793645661.1951003
|
|
68404
|
modular footsteps into energy by @mayaO | Stardanc modular footsteps into energy by @mayaO | Stardance...
|
mayaO
|
0
|
1.53
|
0
|
[]
|
[{"post_id": 77902, "ts": "202 [{"post_id": 77902, "ts": "2026-10-08T18:15:57Z", "hours": 1.5289, "text": "making our design, cad and PCBBBB"}]...
|
Title: modular footsteps into energy by @mayaO | S Title: modular footsteps into energy by @mayaO | Stardance
Devlogs:
making our design, cad and PCBBBB...
|
1793120080.1323512
|
1793724880.1323512
|
|
61456
|
modern walkman style mp3 player by @ainavv | Stard modern walkman style mp3 player by @ainavv | Stardance...
|
ainavv
|
0
|
1.27
|
0
|
[]
|
[{"post_id": 68761, "ts": "202 [{"post_id": 68761, "ts": "2026-09-15T18:13:43Z", "hours": 0.3086, "text": "thinking about taking inspo from this, (vid on youtube by ube), looks fire"}, {"post_id": 68191, "ts": "2026-09-14T17:55:14Z", "hours": 0.3625, "text": "Keep on getting this error when I import my pcb .stp file to onshape please help"}, {"post_id": 67328, "ts": "2026-09-13T12:13:06Z", "hours": 0.5958, "text": "Started on the research for the mp3 player i had in mind for a long time. It consists of a 3.5” waveshare esp32 display and a few additions, like a rotary encoder for scrolling, 3.5mm jack for wired earphones and support for bluetooth earbuds too (partly why i went for a display module over making it from scratch). i’ll work on the outer shell and i’m thinking of adding a few other buttons, but i’m not really sure which ones yet, and where. looking forward to finishing this project."}]...
|
Title: modern walkman style mp3 player by @ainavv Title: modern walkman style mp3 player by @ainavv | Stardance
Devlogs:
Started on the research for the mp3 player i had in mind for a long time. It consists of a 3.5” waveshare esp32 display and a few additions, like a rotary encoder for scrolling, 3.5mm jack for wired earphones and support for bluetooth earbuds too (partly why i went for a display module over making it from scratch). i’ll work on the outer shell and i’m thinking of adding a few other buttons, but i’m not really sure which ones yet, and where. looking forward to finishing this project.
Keep on getting this error when I import my pcb .stp file to onshape please help
thinking about taking inspo from this, (vid on youtube by ube), looks fire...
|
1793040618.4818218
|
1793645418.4818218
|
|
61457
|
modern walkman style mp3 player by @ainavv | Stard modern walkman style mp3 player by @ainavv | Stardance...
|
ainavv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: modern walkman style mp3 player by @ainavv Title: modern walkman style mp3 player by @ainavv | Stardance...
|
1793040619.3905497
|
1793645419.3905497
|
|
70113
|
modern alarm clock for my bedside by @pr0totype | modern alarm clock for my bedside by @pr0totype | Stardance...
|
pr0totype
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: modern alarm clock for my bedside by @pr0to Title: modern alarm clock for my bedside by @pr0totype | Stardance...
|
1792958064.8965738
|
1793562864.8965738
|
|
1214
|
moderately small rocket by @j18lin | Stardance
|
j18lin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: moderately small rocket by @j18lin | Starda Title: moderately small rocket by @j18lin | Stardance...
|
1793332302.2107923
|
1793937102.2107923
|
|
47442
|
model rocket v2 by @simonrnr | Stardance
|
simonrnr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: model rocket v2 by @simonrnr | Stardance
|
1793181170.9715393
|
1793785970.9715393
|
|
19677
|
modOS by @Huseyin | Stardance
|
Huseyin
|
3
|
73.0
|
203
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T22:11:11Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Welcome to modOS. This webOS is not one of those fancy ui webOS’s you saw… this is something more! Let us start from the code. It is entirely modular. All other webOS’s are hard-coded, meaning changing one thing might cause it to break. In modOS, the code being modular allowed me to build the following that is to come… A full API system for app development! Storing data in an account, meaning that you can access your files, settings, EVERYTHING, anywhere! Modular applications… You can install applications using the built-in “packer” package manager. REFER TO README FOR USAGE!!! Once again, modOS is for YOU! So any comments on how “I hate the UI!”, “Make it cooler!!”, “blah blah blah” will be returned. This UI is a TEMPLATE.", "repo": "https://github.com/krambo345/modOS", "demo": "https://modos.krambo.space"}, {"ship_num": 2, "ts": "2026-09-06T14:51:27Z", "hours": 47.0, "multiplier": 4.4, "payout": 203, "blessing": "neutral", "text": "modOS Sevda Çiçeği: A fully open-source, modular, and multi-platform webOS. Features: modOS, unlike other webOS projects, has a plentiful of unique features allowing more customization: Modular build. Developer friendly API’s Pre-built desktop Account service And many more! Usage: modOS can be used everywhere by anyone, making it a great option for people on the move. Development: modOS comes with API’s to allow integration and make it easier for developers to make new packages.", "repo": "https://github.com/krambo345/modOS", "demo": "https://modos.krambo.space"}, {"ship_num": 3, "ts": "2026-06-30T18:15:01Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Welcome to modOS v1.0.0 Cambaz. It is a full webOS that comes with the basics of a computer. This full (almost) stable release is modular, flexible, and heavily optimized to up stand multiple situations. There were many challenges when it came to converting what I did from the guide into a modular system. It came with many problems, errors, lack of sleep, so on and so forth. Thanks to Lil ’G(PT), I was able to automate small tasks like converting HTML apps to a format that could be published in JSON. Features of modOS Cambaz: A fully modular system, with the ability to publish your own JS files with others. A small “terminal” named run. Package/App manager. Bartender(the bar of modOS) WER (Window Manager of modOS) Automated system set up. Developer friendly design. An aesthetic that combines 2000s retro and today’s modern. From here, the future releases of modOS will focus on making a full, complete package manager which makes distributing and receiving applications across modOS more easy. NOTE: In order to use many of the special features of modOS, you have to download and run modOS locally on your device. The picture shows what you would get in an out-of-the-box experience.", "repo": "https://github.com/krambo345/modOS", "demo": "https://modos.krambo.space"}]...
|
[{"post_id": 84595, "ts": "202 [{"post_id": 84595, "ts": "2026-10-29T22:02:33Z", "hours": 2.7103, "text": "Finale As yall know, stardance is ending… here is final form of modOS."}, {"post_id": 68315, "ts": "2026-09-14T22:29:25Z", "hours": 2.7064, "text": "SO MUCH BETTER! modOS is now more than just a template for your OS. It now makes it easier to template your own web OS! New Additions Settings package Splash Screen(you can turn it off in settings!) Saving settings 💾 Uses With these new features, your modOS account will officially have a working function. You can open your environment wherever you want. Future Plans Saving installed packages Saving user-made files/folders(There is already a immature version, however it does not work). Package development IDE. Customized Splash Screen Notification Daemon D-Bus Events 😟 Problems That Occured Resetting custom CSS. New user check(supposed to work. literally no reason it should not) Send Recommendations/Suggestions Sorry for excess use of EMOJIS they are fun"}, {"post_id": 67589, "ts": "2026-09-13T18:52:38Z", "hours": 3.1647, "text": "A Path to Stable From the previous… and unsuccessful ship… I learned many things that could improve modOS(other than a temporary Firebase bug🙄) First of all, there were a lot of bugs. A plenty of the time reported on this devlog are from bug fixing. Secondly, seems like people want to be able to customize the preinstalled system. So I have been working on a settings package to allow managing your account and CUSTOMIZING your system! DISCOVERY❗! Apperiantly, because modOS is modular by design, and because you can import packages, and because you can edit those packages, it turns out app development in the sense of an IDE is by design built in to modOS! With this, I was able to resolve many package related bugs running in a live environment, and even build packages! This will be utilized even more to hopefully make a full modern IDE package for anyone to use and build packages!!! Check out the video below for demonstration! I am looking for ideas, so please hit me up with some!"}, {"post_id": 47520, "ts": "2026-08-15T14:07:54Z", "hours": 8.6556, "text": "Adding stuff As of now, modOS comes with pre-installed packages to get you, the user, started. These include terminal, desktop, bartender, wer(window manager), editor, and more! With these packages you can install more packages(that do not exist yet). Do you want to be a developer? modOS is made to be one of the most developer friendly webOS’s out there! With over 10 different API’s, you can build applications that are easily integrated into the system. You can check out the source code of each package I made for modOS via first, finding the package with ls packages (in terminal) and then reading them with cat packages/PACKAGE (also in terminal)! oooor just go to the krambools github repository https://github.com/krambo345/krambools Bootstrap recovery Bootstrap works right now, for me. However, if anyone else gets errors while booting modOS, they will have the opportunity to repair it via bootstrap recovery that is presented upon failure. link due to a situation, i can not put modOS link to the information. use this link to access modOS: https://modos.krambo.space Thank yall"}, {"post_id": 45147, "ts": "2026-08-11T13:30:21Z", "hours": 11.2347, "text": "BOOYAH! After so long, we finally have VISUAL IMPROVEMENT!!! Before we start, I would appreciate if y’all followed modOS! Link: modos.krambo.space New Additions: You can now install(via packer get) or remove(via packer remove) ANY PACKAGE(from existing directory, use packer fetch for a list) You get some propriety software for modOS so it is easier for you to do stuff :) Package delivered commands! Developers can implement their own commands and API’s to the modOS ecosystem! API integration into packages Dependencies work flow modOS-VT has officially been made modOS, with the original being retired under modOS-pre. It will be removed from GitHub soon. And MANY more minor updates! Things that are needed to be fixed Guest option does not work, special rules needed to be implemented. packer.get API blindly makes a new blob file every time it is used(potential memory leak) There is no settings feature(yet), so the accounts are pretty useless rn. Sorry. And yeah that’s it to my knowledge DEVELOPERS!!! You can officially use the modOS API to make an application for the modOS ecosystem! Sadly, we do not have any documentation, but you can see the existing packages I made for reference, I tried my best to make it easy on y’all! https://github.com/krambo345/krambools/tree/master Publishing If you are a developer that made an application for modOS(tysm!), there sadly is no official way to register the application to modOS(yet!). It is still being implemented. Please hold on to your application until there is a method. Follow this project to be updated for when it is implemented! Thank you! Disclaimers: AI has been heavily used in this part of the project due to the advanced levels of TS used(that I can’t do myself). In my defense, this is the first project I ever made using TypeScript and Vite. Almost every new feature exposes me to another new thing(and problem) to learn!"}, {"post_id": 42585, "ts": "2026-08-07T12:28:48Z", "hours": 7.7994, "text": "Tada! modOS-VT is SO close to being done! I feel it! Disclaimers AI was heavily used at this point of the project. The reason is that the code was starting to get very messy(and not cool looking), which is why I asked AI to REORGANIZE the code. It basically took what I wrote, made them more organized, and made the connections. It is more than likely that the AI added a few of lines itself. Alongside that, I used AI to COMPLETELY make a terminal system using xterm.js(node module). The reason is, xterm has one of the worst and most incomplete documentations I ever saw. I really couldn’t make it myself after three tries. And finally, I used AI to make a package installation/launching system, as that would lead me into parts of Java/Type Script that I previously had no experience with. I am still trying to learn how to make it myself, however. I am very sorry for the heavy usage of AI. This is a very niche project that you can not find a lot of information for. I believe the code still meets AI requirements of Stardance. New Additions There is a fully set-up(with a Firebase back end) account management system to signup or login users. There is a guest option for people who just want to try it out! System-wide terminal. It is made so different software can be built on it! Package installation and launching: This is HUGE! This is what was needed to make modOS MODULAR ! New API’s Very cool and clean looking code(developer friendly). Future Updates modOS-VT will be rebranded to just modOS. There will be some base packages that are needed to make. A README.md for developers with the instructions on making a package. And yeah that is what’s left for modOS-VT."}, {"post_id": 28076, "ts": "2026-07-14T03:22:04Z", "hours": 9.6597, "text": "Longer Yet Shorter [Dev Post 6] After some long work, modOS is finally getting easier to get done. But it’s not done just yet. What is new? modOS now has some basic API’s, which will be used in the future by developers to make applications that can be fully integrated into the ecosystem. Bootstrap is reaching completion, which will bring us to the next step: display. We also have one of the most important functions of an OS, file management! modOS utilizes zenfs/core to store files and folders(alongside their structure) in memory! This will allow the creation of file explorers, document making, and more! This is also a crucial piece to make a modular OS. What is needed? modOS still needs some more API’s, most which will come from packages. Due to that, the next dev post should be of packer, the official package manager for modOS. It will be the connectiong between users, database, and developers. User <--> Database <--> Developer Meaning dev’s will be able to publish packages, and user’s will be able to download them! And finally, we need an account session thingy to keep track of each user’s installed packages. This also will allow the usage of YOUR modOS anywhere! Final Regards pretty cool"}, {"post_id": 25326, "ts": "2026-07-09T15:28:04Z", "hours": 6.805, "text": "A New Beginning [Dev Post 5] Here is what I got done ever since I announced modOS Sevda Çiçeği! git init So we now have modOS-VT as a GitHub repository. It’s pretty cool. VT stands for Vite Type, indicating how the project utilizes Vite and TypeScript instead of just html and javascript. What is made? I made: A bootstrap, which initializes every service necessary for modOS runtime. Basic system. Firebase!!! Jeez, why did it take 7 hours? Well, my friend, modOS is completely modular. So there is a bit of contradiction when I need to make a bootstrap that launches things, if there is no things . I worked on making a placeholder for almost everything. Core Idea modOS will be just like any other Linux distribution. You have the base system that gives you whatever you need. And you install user-generated content with a package manager! It will be so cool! But right now, I am still working on making the base system part. PSST! Do you want to contribute to modOS by making an app for it? Well you absolutely can! Right now it’s a bit difficult as there is no modOS . However, you can develop applications using typescript any time! Later modOS versions will come with API’s that you can integrate your app into the modOS ecosystem. Challenges The main challenge was getting started with modOS… again… but when I did start, it starts flowing like butter. What I LOVE about modOS right now: Because modOS-VT is built on Vite, I can use packages and make it easier to use with GitHub pages! I did not have to make 15 commits for a bug fix while setting up GitHub pages! Final Regards Thank you. :)"}, {"post_id": 19732, "ts": "2026-07-01T03:52:27Z", "hours": 3.1253, "text": "Announcing modOS Sevda Çiçeği Concept After completing the pretty underdeveloped modOS Cambaz, I think it is time we move on to a full, stable, environment. Plans for modOS Sevda Çiçeği: A fully modular webOS where you can change everything from the window rules to the very development environment. A package manager for distributing, installing, and managing user created packages. A full modOS API for consistency and compatibality. And MANY more. Here is a checklist/roadmap for modOS that you can follow as I check off the tasks: https://docs.google.com/document/d/1H7caegzGowVeYkntmm87eaJ8XJtSyU1Pbvb5vVNmgYI/edit?usp=sharing Logged hours for this dev post come from earlier bug fixes and polishing to modOS Cambaz alongside the making of modOS Sevda Çiçeği"}, {"post_id": 19271, "ts": "2026-06-30T15:17:32Z", "hours": 6.3744, "text": "The End..? [Dev Post 4] With the guide finally being done, I announce modOS v1.0.0 Cambaz . Before I nerd out about everything added, here is more information about Mor ve Ötesi , the band behind Cambaz: https://en.wikipedia.org/wiki/Mor_ve_%C3%B6tesi Why is modOS different? Well, throughout the path of following the guide and making modOS, I completely rejected the idea of a hard-coded anything. Sure, it might be open-source, but what is the point of open-source if changing the source is going to take many hours of coding? modOS competes against a permanent webOS. The following features highlight how modOS achieves that: modOS does not have any hard-coded applications, bar, desktop, etc. Every app is found in a JSON file (apps.json located in /base/system/) which can be modified to install any application you want, easily! Currently this step is manual, and there is no official repository of verified applications. However, that is subject to change. Bartender (the bar system of modOS) is a JavaScript file (bartender.js found in /base/system/bartender.js) which can be modified to make the bar whatever you want! WER (Window Manager for modOS) is a script that inserts window functions such as the minimize and close buttons alongside the name of the window, icon, and movement system. The whole script is launched with initwindow(win) where win is the main window element. Got confused with the initwindow(win) command? Not to worry, modOS comes with the exec command, which follows the format exec(appname, icon) , where you can determine the name of the application ( REQUIRED ) and its icon ( NOT REQUIRED ). Whenever the command is run, the script ( exec.js found in /base/system/ ) looks through apps.json and pulls the necessary content and scripts, giving you a fully functional app. Note: If you decide to use a custom icon with an existing app, exec.js will still use the icon used in the database to maintain the developers creativity! So are you even more lazy? Cuz modOS desktop shows every app in apps.json for easier access. All you need is the ability to double click the app you want! Note: Psst! There are hidden applications. You need to run showhidden() to show them, and hidehidden() if you would like to hide them back. You can customize modOS off of the base CSS by editing config.css (config.css found in /system/user/) Default Applications List App Template: It is a template for you to make your own app! (hidden by default) run: An alternative for the developer console that comes with modern browsers. A great option for mobile users or older, unsupported browsers. Release Notes: Your updated news for modOS! Theme Song: The theme song of modOS! Plays Cambaz by Mor ve Ötesi. Future Updates A signup/login system is planned to be added for cross-platform sync ability (e.g. apps, settings, customizations, etc). This will be optional and you can still use modOS as a guest. modOS developer mode: A way for you to build applications for you and others on modOS! Window minimization: Currently, windows do get minimized. However, you really cannot un-minimize them without running the command document.querySelector(\".win\").style.display=\"block\" , which is unreliable and annoying. More applications: You will use modOS developer mode to develop applications for the ecosystem. No more work for me."}, {"post_id": 18381, "ts": "2026-06-29T14:53:03Z", "hours": 7.1789, "text": "A Big Jump [Dev Post 3] Here is an update of what I’ve been working on over the weekend. And there is a lot! Window Movement I followed the guide to make windows movable. However, there was a challenge. Challenge If I want to make modOS modular, how could I identify user-made windows? The guide showed a hard-coded movement system, but that would mean other people couldn’t make their own apps! Solution I used .querySelector to give every window of the same class movement functionality while keeping each instance separate. This means no matter how many windows of the same app you make, they’ll all be movable! So yes, you could have 30 copies of the same ping pong app ( not on modOS… yet ) and every window would work normally. Account Feature (Still in Progress) This is mainly what took most of the 7 hours I logged today. What was used? I used Firebase to establish a backend where user info would be stored. The info consists of a username, password, and user data. The first two are self-explanatory, but the data will store user changes to their OS so they can jump back in where they left off. Challenges The account creation script should theoretically work. However, I didn’t build the project around a package manager. Firebase works much better with one, meaning the project would need to be migrated to a framework like Vite. Solution There is a solution: create a new repository with Vite installed, then move everything over. I really didn’t want to deal with that right now, so the account feature will be implemented once the base build of modOS is complete. App Launching You can now use a terminal interface to launch apps! Challenges To keep apps modular while still being… apps, I couldn’t just say “open this app.” I needed users to be able to define a preferred name, icon, and content. The first two were easy, but I also needed a list of apps and their content. This way, future modOS developers can publish their applications to the modOS environment. Solution There is now an apps.json file with a full list of apps ( 1 app right now ). Whenever you launch an app via exec(name, icon) from the Dev Console, it checks whether the app exists in the JSON file and, if it does, fetches its corresponding content. A Step Towards Modular… modOS is officially MODULAR ! What is modular as of now? Many things! I scratched the modular clock idea from the previous Dev Post… AND REPLACED IT WITH A COMPLETELY MODULAR BAR!!! So now the entire bar is modular. :) Apps are now modular too! You can launch any app via exec(name, icon) in the Dev Console (often opened with F12) to render a new window with your preferred name and icon. The clock idea was scratched… BUT THE CLOCK ITSELF IS STILL MODULAR! Challenges Making things modular takes a lot of time. You don’t just write your program in HTML anymore—you have to generate it through JavaScript. To make it modular, individual variables need to go through their own processes before everything connects together. And of course… that usually comes with a bug or two. Solution Uh… yeah, that was the challenge. Doesn’t really need a solution. Releases From now on, every new release will be named after a song from a 2000s Turkish Alternative Rock band. The next major release will be called: modOS v0.x.x-alpha [Mor Ve Ötesi - Cambaz] Make sure you give it a listen. It’s a banger! Final Thoughts I think the project is going very well. It’s taking a lot of time, but it’s worthwhile since I’m learning new things about a programming language I’ve been using for five years now. I’m hoping to add more features, finish the base build, and finally move on to the backend side of things."}, {"post_id": 10467, "ts": "2026-06-17T06:18:54Z", "hours": 2.2683, "text": "Getting Started [Dev Post 2] Today, I did not do much visual progress. However, there is way more that goes on in the background. What’s new? We now have a bar tender. There is a clock now. But it’s not just any clock, this clock is MODULAR ! A very fancy weather widget with a very (not) fancy API. A MODULAR Clock? What does that mean? I’m glad you asked. Unlike a traditional clock, this clock actually is separated in multiple tags. That means you can move the tags around to change the order of the clock values. API This Dev Post is sponsored by wttr.in! With it’s simple, no sign-up, and no data limit, wttr.in is in my top 5 API’s. With a single fetch , we achieve great things like burnin’ hot weather. Notes: The clock is by definition modular, however not too accessible. This will be fixed with future updates. No, this Dev Post is not actually sponsored. You can check out the current state of modOS here ."}, {"post_id": 9757, "ts": "2026-06-16T05:59:35Z", "hours": 1.2353, "text": "modOS v0.0.1-alpha [Dev Post 1] This is a base release for an early preview of the main idea for modOS. Current “features” Website loads. Backgrounds. Base window infrastructure. Cool window hover/leave effect. :D Notes: Although the project is supposed to be modular, it is still in early development. So every line is hard-coded and is not modular."}]...
|
Title: modOS by @Huseyin | Stardance
Devlogs:
mod Title: modOS by @Huseyin | Stardance
Devlogs:
modOS v0.0.1-alpha [Dev Post 1] This is a base release for an early preview of the main idea for modOS. Current “features” Website loads. Backgrounds. Base window infrastructure. Cool window hover/leave effect. :D Notes: Although the project is supposed to be modular, it is still in early development. So every line is hard-coded and is not modular.
Getting Started [Dev Post 2] Today, I did not do much visual progress. However, there is way more that goes on in the background. What’s new? We now have a bar tender. There is a clock now. But it’s not just any clock, this clock is MODULAR ! A very fancy weather widget with a very (not) fancy API. A MODULAR Clock? What does that mean? I’m glad you asked. Unlike a traditional clock, this clock actually is separated in multiple tags. That means you can move the tags around to change the order of the clock values. API This Dev Post is sponsored by wttr.in! With it’s simple, no sign-up, and no data limit, wttr.in is in my top 5 API’s. With a single fetch , we achieve great things like burnin’ hot weather. Notes: The clock is by definition modular, however not too accessible. This will be fixed with future updates. No, this Dev Post is not actually sponsored. You can check out the current state of modOS here .
A Big Jump [Dev Post 3] Here is an update of what I’ve been working on over the weekend. And there is a lot! Window Movement I followed the guide to make windows movable. However, there was a challenge. Challenge If I want to make modOS modular, how could I identify user-made windows? The guide showed a hard-coded movement system, but that would mean other people couldn’t make their own apps! Solution I used .querySelector to give every window of the same class movement functionality while keeping each instance separate. This means no matter how many windows of the same app you make, they’ll all be movable! So yes, you could have 30 copies of the same ping pong app ( not on modOS… yet ) and every window would work normally. Account Feature (Still in Progress) This is mainly what took most of the 7 hours I logged today. What was used? I used Firebase to establish a backend where user info would be stored. The info consists of a username, password, and user data. The first two are self-explanatory, but the data will store user changes to their OS so they can jump back in where they left off. Challenges The account creation script should theoretically work. However, I didn’t build the project around a package manager. Firebase works much better with one, meaning the project would need to be migrated to a framework like Vite. Solution There is a solution: create a new repository with Vite installed, then move everything over. I really didn’t want to deal with that right now, so the account feature will be implemented once the base build of modOS is complete. App Launching You can now use a terminal interface to launch apps! Challenges To keep apps modular while still being… apps, I couldn’t just say “open this app.” I needed users to be able to define a preferred name, icon, and content. The first two were easy, but I also needed a list of apps and their content. This way, future modOS developers can publish their applications to the modOS environment. Solution There is now an apps.json file with a full list of apps ( 1 app right now ). Whenever you launch an app via exec(name, icon) from the Dev Console, it checks whether the app exists in the JSON file and, if it does, fetches its corresponding content. A Step Towards Modular… modOS is officially MODULAR ! What is modular as of now? Many things! I scratched the modular clock idea from the previous Dev Post… AND REPLACED IT WITH A COMPLETELY MODULAR BAR!!! So now the entire bar is modular. :) Apps are now modular too! You can launch any app via exec(name, icon) in the Dev Console (often opened with F12) to render a new window with your preferred name and icon. The clock idea was scratched… BUT THE CLOCK ITSELF IS STILL MODULAR! Challenges Making things modular takes a lot of time. You don’t just write your program in HTML anymore—you have to generate it through JavaScript. To make it modular, individual variables need to go through their own processes before everything connects together. And of course… that usually comes with a bug or two. Solution Uh… yeah, that was the challenge. Doesn’t really need a solution. Releases From now on, every new release will be named after a song from a 2000s Turkish Alternative Rock band. The next major release will be called: modOS v0.x.x-alpha [Mor Ve Ötesi - Cambaz] Make sure you give it a listen. It’s a banger! Final Thoughts I think the project is going very well. It’s taking a lot of time, but it’s worthwhile since I’m learning new things about a programming language I’ve been using for five years now. I’m hoping to add more features, finish the base build, and finally move on to the backend side of things.
The End..? [Dev Post 4] With the guide finally being done, I announce modOS v1.0.0 Cambaz . Before I nerd out about everything added, here is more information about Mor ve Ötesi , the band behind Cambaz: https://en.wikipedia.org/wiki/Mor_ve_%C3%B6tesi Why is modOS different? Well, throughout the path of following the guide and making modOS, I completely rejected the idea of a hard-coded anything. Sure, it might be open-source, but what is the point of open-source if changing the source is going to take many hours of coding? modOS competes against a permanent webOS. The following features highlight how modOS achieves that: modOS does not have any hard-coded applications, bar, desktop, etc. Every app is found in a JSON file (apps.json located in /base/system/) which can be modified to install any application you want, easily! Currently this step is manual, and there is no official repository of verified applications. However, that is subject to change. Bartender (the bar system of modOS) is a JavaScript file (bartender.js found in /base/system/bartender.js) which can be modified to make the bar whatever you want! WER (Window Manager for modOS) is a script that inserts window functions such as the minimize and close buttons alongside the name of the window, icon, and movement system. The whole script is launched with initwindow(win) where win is the main window element. Got confused with the initwindow(win) command? Not to worry, modOS comes with the exec command, which follows the format exec(appname, icon) , where you can determine the name of the application ( REQUIRED ) and its icon ( NOT REQUIRED ). Whenever the command is run, the script ( exec.js found in /base/system/ ) looks through apps.json and pulls the necessary content and scripts, giving you a fully functional app. Note: If you decide to use a custom icon with an existing app, exec.js will still use the icon used in the database to maintain the developers creativity! So are you even more lazy? Cuz modOS desktop shows every app in apps.json for easier access. All you need is the ability to double click the app you want! Note: Psst! There are hidden applications. You need to run showhidden() to show them, and hidehidden() if you would like to hide them back. You can customize modOS off of the base CSS by editing config.css (config.css found in /system/user/) Default Applications List App Template: It is a template for you to make your own app! (hidden by default) run: An alternative for the developer console that comes with modern browsers. A great option for mobile users or older, unsupported browsers. Release Notes: Your updated news for modOS! Theme Song: The theme song of modOS! Plays Cambaz by Mor ve Ötesi. Future Updates A signup/login system is planned to be added for cross-platform sync ability (e.g. apps, settings, customizations, etc). This will be optional and you can still use modOS as a guest. modOS developer mode: A way for you to build applications for you and others on modOS! Window minimization: Currently, windows do get minimized. However, you really cannot un-minimize them without running the command document.querySelector(".win").style.display="block" , which is unreliable and annoying. More applications: You will use modOS developer mode to develop applications for the ecosystem. No more work for me.
Announcing modOS Sevda Çiçeği Concept After completing the pretty underdeveloped modOS Cambaz, I think it is time we move on to a full, stable, environment. Plans for modOS Sevda Çiçeği: A fully modular webOS where you can change everything from the window rules to the very development environment. A package manager for distributing, installing, and managing user created packages. A full modOS API for consistency and compatibality. And MANY more. Here is a checklist/roadmap for modOS that you can follow as I check off the tasks: https://docs.google.com/document/d/1H7caegzGowVeYkntmm87eaJ8XJtSyU1Pbvb5vVNmgYI/edit?usp=sharing Logged hours for this dev post come from earlier bug fixes and polishing to modOS Cambaz alongside the making of modOS Sevda Çiçeği
A New Beginning [Dev Post 5] Here is what I got done ever since I announced modOS Sevda Çiçeği! git init So we now have modOS-VT as a GitHub repository. It’s pretty cool. VT stands for Vite Type, indicating how the project utilizes Vite and TypeScript instead of just html and javascript. What is made? I made: A bootstrap, which initializes every service necessary for modOS runtime. Basic system. Firebase!!! Jeez, why did it take 7 hours? Well, my friend, modOS is completely modular. So there is a bit of contradiction when I need to make a bootstrap that launches things, if there is no things . I worked on making a placeholder for almost everything. Core Idea modOS will be just like any other Linux distribution. You have the base system that gives you whatever you need. And you install user-generated content with a package manager! It will be so cool! But right now, I am still working on making the base system part. PSST! Do you want to contribute to modOS by making an app for it? Well you absolutely can! Right now it’s a bit difficult as there is no modOS . However, you can develop applications using typescript any time! Later modOS versions will come with API’s that you can integrate your app into the modOS ecosystem. Challenges The main challenge was getting started with modOS… again… but when I did start, it starts flowing like butter. What I LOVE about modOS right now: Because modOS-VT is built on Vite, I can use packages and make it easier to use with GitHub pages! I did not have to make 15 commits for a bug fix while setting up GitHub pages! Final Regards Thank you. :)
Longer Yet Shorter [Dev Post 6] After some long work, modOS is finally getting easier to get done. But it’s not done just yet. What is new? modOS now has some basic API’s, which will be used in the future by developers to make applications that can be fully integrated into the ecosystem. Bootstrap is reaching completion, which will bring us to the next step: display. We also have one of the most important functions of an OS, file management! modOS utilizes zenfs/core to store files and folders(alongside their structure) in memory! This will allow the creation of file explorers, document making, and more! This is also a crucial piece to make a modular OS. What is needed? modOS still needs some more API’s, most which will come from packages. Due to that, the next dev post should be of packer, the official package manager for modOS. It will be the connectiong between users, database, and developers. User <--> Database <--> Developer Meaning dev’s will be able to publish packages, and user’s will be able to download them! And finally, we need an account session thingy to keep track of each user’s installed packages. This also will allow the usage of YOUR modOS anywhere! Final Regards pretty cool
Tada! modOS-VT is SO close to being done! I feel it! Disclaimers AI was heavily used at this point of the project. The reason is that the code was starting to get very messy(and not cool looking), which is why I asked AI to REORGANIZE the code. It basically took what I wrote, made them more organized, and made the connections. It is more than likely that the AI added a few of lines itself. Alongside that, I used AI to COMPLETELY make a terminal system using xterm.js(node module). The reason is, xterm has one of the worst and most incomplete documentations I ever saw. I really couldn’t make it myself after three tries. And finally, I used AI to make a package installation/launching system, as that would lead me into parts of Java/Type Script that I previously had no experience with. I am still trying to learn how to make it myself, however. I am very sorry for the heavy usage of AI. This is a very niche project that you can not find a lot of information for. I believe the code still meets AI requirements of Stardance. New Additions There is a fully set-up(with a Firebase back end) account management system to signup or login users. There is a guest option for people who just want to try it out! System-wide terminal. It is made so different software can be built on it! Package installation and launching: This is HUGE! This is what was needed to make modOS MODULAR ! New API’s Very cool and clean looking code(developer friendly). Future Updates modOS-VT will be rebranded to just modOS. There will be some base packages that are needed to make. A README.md for developers with the instructions on making a package. And yeah that is what’s left for modOS-VT.
BOOYAH! After so long, we finally have VISUAL IMPROVEMENT!!! Before we start, I would appreciate if y’all followed modOS! Link: modos.krambo.space New Additions: You can now install(via packer get) or remove(via packer remove) ANY PACKAGE(from existing directory, use packer fetch for a list) You get some propriety software for modOS so it is easier for you to do stuff :) Package delivered commands! Developers can implement their own commands and API’s to the modOS ecosystem! API integration into packages Dependencies work flow modOS-VT has officially been made modOS, with the original being retired under modOS-pre. It will be removed from GitHub soon. And MANY more minor updates! Things that are needed to be fixed Guest option does not work, special rules needed to be implemented. packer.get API blindly makes a new blob file every time it is used(potential memory leak) There is no settings feature(yet), so the accounts are pretty useless rn. Sorry. And yeah that’s it to my knowledge DEVELOPERS!!! You can officially use the modOS API to make an application for the modOS ecosystem! Sadly, we do not have any documentation, but you can see the existing packages I made for reference, I tried my best to make it easy on y’all! https://github.com/krambo345/krambools/tree/master Publishing If you are a developer that made an application for modOS(tysm!), there sadly is no official way to register the application to modOS(yet!). It is still being implemented. Please hold on to your application until there is a method. Follow this project to be updated for when it is implemented! Thank you! Disclaimers: AI has been heavily used in this part of the project due to the advanced levels of TS used(that I can’t do myself). In my defense, this is the first project I ever made using TypeScript and Vite. Almost every new feature exposes me to another new thing(and problem) to learn!
Adding stuff As of now, modOS comes with pre-installed packages to get you, the user, started. These include terminal, desktop, bartender, wer(window manager), editor, and more! With these packages you can install more packages(that do not exist yet). Do you want to be a developer? modOS is made to be one of the most developer friendly webOS’s out there! With over 10 different API’s, you can build applications that are easily integrated into the system. You can check out the source code of each package I made for modOS via first, finding the package with ls packages (in terminal) and then reading them with cat packages/PACKAGE (also in terminal)! oooor just go to the krambools github repository https://github.com/krambo345/krambools Bootstrap recovery Bootstrap works right now, for me. However, if anyone else gets errors while booting modOS, they will have the opportunity to repair it via bootstrap recovery that is presented upon failure. link due to a situation, i can not put modOS link to the information. use this link to access modOS: https://modos.krambo.space Thank yall
A Path to Stable From the previous… and unsuccessful ship… I learned many things that could improve modOS(other than a temporary Firebase bug🙄) First of all, there were a lot of bugs. A plenty of the time reported on this devlog are from bug fixing. Secondly, seems like people want to be able to customize the preinstalled system. So I have been working on a settings package to allow managing your account and CUSTOMIZING your system! DISCOVERY❗! Apperiantly, because modOS is modular by design, and because you can import packages, and because you can edit those packages, it turns out app development in the sense of an IDE is by design built in to modOS! With this, I was able to resolve many package related bugs running in a live environment, and even build packages! This will be utilized even more to hopefully make a full modern IDE package for anyone to use and build packages!!! Check out the video below for demonstration! I am looking for ideas, so please hit me up with some!
SO MUCH BETTER! modOS is now more than just a template for your OS. It now makes it easier to template your own web OS! New Additions Settings package Splash Screen(you can turn it off in settings!) Saving settings 💾 Uses With these new features, your modOS account will officially have a working function. You can open your environment wherever you want. Future Plans Saving installed packages Saving user-made files/folders(There is already a immature version, however it does not work). Package development IDE. Customized Splash Screen Notification Daemon D-Bus Events 😟 Problems That Occured Resetting custom CSS. New user check(supposed to work. literally no reason it should not) Send Recommendations/Suggestions Sorry for excess use of EMOJIS they are fun
Finale As yall know, stardance is ending… here is final form of modOS.
Ships:
Welcome to modOS v1.0.0 Cambaz. It is a full webOS that comes with the basics of a computer. This full (almost) stable release is modular, flexible, and heavily optimized to up stand multiple situations. There were many challenges when it came to converting what I did from the guide into a modular system. It came with many problems, errors, lack of sleep, so on and so forth. Thanks to Lil ’G(PT), I was able to automate small tasks like converting HTML apps to a format that could be published in JSON. Features of modOS Cambaz: A fully modular system, with the ability to publish your own JS files with others. A small “terminal” named run. Package/App manager. Bartender(the bar of modOS) WER (Window Manager of modOS) Automated system set up. Developer friendly design. An aesthetic that combines 2000s retro and today’s modern. From here, the future releases of modOS will focus on making a full, complete package manager which makes distributing and receiving applications across modOS more easy. NOTE: In order to use many of the special features of modOS, you have to download and run modOS locally on your device. The picture shows what you would get in an out-of-the-box experience.
modOS Sevda Çiçeği: A fully open-source, modular, and multi-platform webOS. Features: modOS, unlike other webOS projects, has a plentiful of unique features allowing more customization: Modular build. Developer friendly API’s Pre-built desktop Account service And many more! Usage: modOS can be used everywhere by anyone, making it a great option for people on the move. Development: modOS comes with API’s to allow integration and make it easier for developers to make new packages.
Welcome to modOS. This webOS is not one of those fancy ui webOS’s you saw… this is something more! Let us start from the code. It is entirely modular. All other webOS’s are hard-coded, meaning changing one thing might cause it to break. In modOS, the code being modular allowed me to build the following that is to come… A full API system for app development! Storing data in an account, meaning that you can access your files, settings, EVERYTHING, anywhere! Modular applications… You can install applications using the built-in “packer” package manager. REFER TO README FOR USAGE!!! Once again, modOS is for YOU! So any comments on how “I hate the UI!”, “Make it cooler!!”, “blah blah blah” will be returned. This UI is a TEMPLATE....
|
1793325273.7530522
|
1793411673.7530522
|
|
63692
|
mod helper for minecraft by @Pranel | Stardance
|
Pranel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mod helper for minecraft by @Pranel | Stard Title: mod helper for minecraft by @Pranel | Stardance...
|
1793054879.4310212
|
1793659679.4310212
|
|
63693
|
mod helper for minecraft by @Pranel | Stardance
|
Pranel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mod helper for minecraft by @Pranel | Stard Title: mod helper for minecraft by @Pranel | Stardance...
|
1793054880.3616583
|
1793659680.3616583
|
|
63694
|
mod helper for minecraft by @Pranel | Stardance
|
Pranel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mod helper for minecraft by @Pranel | Stard Title: mod helper for minecraft by @Pranel | Stardance...
|
1793054882.3366919
|
1793659682.3366919
|
|
46591
|
mod by @danitzamerinoss1979 | Stardance
|
danitzamerinoss1979
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mod by @danitzamerinoss1979 | Stardance
|
1793390110.2650144
|
1793994910.2650144
|
|
54696
|
mochi_robot_project by @lakshaykhatri780 | Stardan mochi_robot_project by @lakshaykhatri780 | Stardance...
|
lakshaykhatri780
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:28:58Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!", "repo": "https://github.com/lakshaykhatri780-tech/mochi_robot_project", "demo": ""}]...
|
[{"post_id": 63770, "ts": "202 [{"post_id": 63770, "ts": "2026-09-07T18:46:22Z", "hours": 1.0558, "text": "Finally mochi shows expressions"}, {"post_id": 63494, "ts": "2026-09-07T11:50:31Z", "hours": 0.95, "text": "Wiring all my components on prefboard"}, {"post_id": 63428, "ts": "2026-09-07T08:36:10Z", "hours": 0.805, "text": "Making a custom circuit for my mochi"}, {"post_id": 62144, "ts": "2026-09-05T12:15:01Z", "hours": 2.0981, "text": "writting the codes for my mochi expressions"}]...
|
Title: mochi_robot_project by @lakshaykhatri780 | Title: mochi_robot_project by @lakshaykhatri780 | Stardance
Devlogs:
writting the codes for my mochi expressions
Making a custom circuit for my mochi
Wiring all my components on prefboard
Finally mochi shows expressions
Ships:
I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!...
|
1793318011.6819625
|
1793404411.6819625
|
|
26162
|
mochiOS by @tas0dev | Stardance
|
tas0dev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mochiOS by @tas0dev | Stardance
|
1793332234.5067215
|
1793937034.5067215
|
|
49972
|
mochi by @lore_jk | Stardance
|
lore_jk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mochi by @lore_jk | Stardance
|
1793314598.014879
|
1793919398.014879
|
|
68149
|
mochi by @LPcomix123 | Stardance
|
LPcomix123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mochi by @LPcomix123 | Stardance
|
1793119724.8735902
|
1793724524.8735902
|
|
16571
|
mocha by @Glitchy | Stardance
|
Glitchy
|
1
|
101.0
|
1806
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T18:57:02Z", "hours": 101.0, "multiplier": 17.94, "payout": 1806, "blessing": "neutral", "text": "I made a package manager for Windows, which is somewhat backwards compatible with scoop packages. To be honest there’s still a lot of work that I want to do, but I have exams and college application coming up soon so I can’t. That’s not to say I’m not happy with the state of the ship. At the very least it has all the core features that a package manager should have, but there are still a lot of bugs which is why this is only v0.0.1. The biggest challenge by far was trying to figure out how Scoop does things internally. A lot of stuff just doesn’t have documentation, so you have to dig through the really messy PowerShell source code.", "repo": "https://github.com/Protract-123/mocha", "demo": "https://github.com/Protract-123/mocha/releases/latest"}]...
|
[{"post_id": 67579, "ts": "202 [{"post_id": 67579, "ts": "2026-09-13T18:33:17Z", "hours": 1.7761, "text": "So I wrote a README, added a license (MIT of course) and setup CI/CD so that releases are automatically built and deployed. Honestly I forgot how hard it is to write a good README. You need to get a lot of information through without it looking like a wall of text."}, {"post_id": 67267, "ts": "2026-09-13T10:36:48Z", "hours": 5.8047, "text": "I forgot to make a devlog in between so this will be like 2 bigger devlogs. I parallelized bucket updates, which speeds it up quite a bit. This also allowed me to try out parallelism even more, which I plan to apply throughout the CLI later on. I also added configuration options for the runners which mocha shim will use to run certain file types. For example, you can set the python-runner to select the python version that’ll be used to run python scripts that are shimmed. Downloads now have a progress bar, so you don’t need to wonder whether something is happening or not during a long download. Finally env_set is fully supported since I added the relevant variable parsing. This was pretty much just me cleaning out the TODO list before I ship. I also did a lot of smaller bug fixes and refactors as seen below. fix(commands): prevent app installation if already installed (cb27d07) fix(commands): fix config opening with “start” (74f3679) fix(commands): correctly handle non-apps when upgrading (f7419f6) fix: make LogOutput go to Stdout not Stderr (bc10357) fix: handle empty versions correctly (2287da9) fix(pkg): remove correct temp dir (33189b6) fix(shim): warn for unknown shim extension (622c2b4) fix: skip downloads with no hash by default (69d4e35) fix: use correct timeout for downloads (44e527b) fix: drop unnecessary return value from GetExecutableEntries (9fd845c) fix(config): remove unused option (1339971) fix(commands): don’t error for valid results (87c4d6c) refactor(config): rename variables/functions (f253d9d) fix: use unique temp directories (a159e23) refactor: use fmt.Fprintln directly (d2d54bf)"}, {"post_id": 65401, "ts": "2026-09-10T14:55:22Z", "hours": 2.5386, "text": "Lots of small bug fixes and changes, I’ll just list them out: feat(cmd): allow removal of multiple shims in one execution (f2fae3f) fix(manifest): correctly ignore invalid shortcut entries (6a08478) fix(fileops): use correct registry type (5d5d796) fix(config): seed config with defaults (9dfaaff) fix(cmd): use correct release sources (a2a9ba1) fix(cmd): use bucket from install info (5a9109b) I also added support for more file types being shimmed, which helps a lot with compatibility. The file types are .py , .bat , .cmd , .jar and .ps1 ."}, {"post_id": 52474, "ts": "2026-08-22T16:37:15Z", "hours": 4.6758, "text": "Lot of time going into this devlog, but it makes sense since I did do a lot. I did this sweeping refactor of the entire commands module which moved around a lot of code. Essentially each command now gets it’s own directory under the commands module that represents it’s children/parents. For example commands/shim/remove/cmd.go contains code for the mocha shim remove command. Each cmd.go contains a Command struct that has the relevant fields and functions attached to it. This structure just makes things more organized and also means adding test files will be a bit easier since functionality is now isolated. I also sorted out the shim binary. So essentially https://github.com/ScoopInstaller/Shim offers different version of the shim binary which can be installed. Previously I hard coded the code to install cpp v0.1.0 but now users can run mocha shim binary releases to see the options and mocha shim binary setup to install their chosen binary. This also means we actually get the latest releases from GitHub."}, {"post_id": 51141, "ts": "2026-08-20T17:11:51Z", "hours": 3.6722, "text": "Finally got a bit of time to do a bit of development. First thing I did was remove a field from install.json to match scoop . This means that mocha should be a drop in replacement for existing scoop installs. Then I added partial support for env_set and env_add_path . The main thing I need to do to complete the feature is parse variables and replace them with the appropriate paths. These 2 fields are some of the last manifest fields I need to support besides pre/post (un)install hooks."}, {"post_id": 34596, "ts": "2026-07-25T13:39:02Z", "hours": 2.5778, "text": "My summer break has ended so development is going to be a lot slower from now. I added mocha outdated so you can list outdated apps before upgrading them to a newer version. Besides that I tweaked a lot of stuff related to CLI output. For example I changed search to output one table, and simply outputting exact matches at the top of that table. I also changed a lot of messages which were using LogOutput to LogInfo so they use the correct color and output to stderr and not stdout ."}, {"post_id": 31801, "ts": "2026-07-20T14:04:04Z", "hours": 1.5481, "text": "Not sure why I didn’t do this earlier, but I’ve added success messages to commands where it makes sense. Also added a success color to the config so you can change what the success color is. I do still need to improve CLI output quite a bit, but it’s slowly getting there."}, {"post_id": 30693, "ts": "2026-07-18T14:02:54Z", "hours": 2.1922, "text": "I’m writing this one right before F1 Qualifying at Spa! Continuing with the trend of some of my recent work, I improved what table outputs look like to be a little bit more readable. We now use proper separators in the form of Unicode Box Drawing Characters . I also made column alignment configurable, which improves legibility for some commands like mocha bucket list and mocha cache show . I’ve attached an image of the scoop and mocha versions of bucket list so you can compare for yourself."}, {"post_id": 30286, "ts": "2026-07-17T18:51:34Z", "hours": 3.4797, "text": "I love refactoring!!!! I’ll probably end up spending another 20 hours just on refactoring because it’s so fun!!!! This time around I wanted to refactor the code so that our commands orchestrate stuff instead of the helper functions. For example, pkg.Install would first download a package, then install it, and then link it through shims and shortcuts all by itself. This causes issues because it means error messages become slightly worse, and it creates a class of bugs due to edge cases where we don’t necessarily want this order of orchestration. Hence I did a lot of refactoring in the pkg module. I also ended up adding a way to skip verification of downloads when downloading, installing or updating a package through --skip-verify . It’s a useful option in situations where there is a malformed manifest or simply no hash to begin with."}, {"post_id": 30054, "ts": "2026-07-17T10:28:53Z", "hours": 4.6269, "text": "mocha now supports a user defined theme for output colors. In the process I ended up doing a lot of stuff related to the config. First thing I did was swap to fatih/color for colored output, since it handles stuff like colors in command prompt and removing color when output is piped. Then I refactored the config module. Earlier I would pass around a MochaConfiguration object through every function. Now I use a config singleton that’s accessible from any function. Why? Because it means I don’t need to pass the object every time I want to log information. Also means I don’t need to pass mochaDir through almost every function in the codebase. Getting user defined themes was a bit complicated because I needed a good way to handle a default theme so output doesn’t look bad if parsing fails. I handled this by only using the configured theme if every color resolves properly. Otherwise output falls back to the already loaded default theme. Due to this you still get colored output even if there are errors or warning before the configuration and theme is loaded."}, {"post_id": 29066, "ts": "2026-07-15T18:30:47Z", "hours": 4.7214, "text": "So I’ve been doing a bit of refactoring, a bit of bug fixing and a bit of optimization. Essentially just polishing mocha before I work on the next feature. Here’s some of the stuff I did: created tests for ParseRefString to validate behavior cache manifest json between info calls since I/O is really slow bumped dependency versions refactored manifest/info.go Besides that I fixed the uninstall flow since it was really bugged after the latest changes. Essentially mocha would uninstall apps with incorrect info. It would also try to remove shims/shortcuts for apps which don’t have any active shims/shortcuts. I then added a bit of logging since the uninstall command didn’t give any user output for whatever reason (i forgot to earlier)."}, {"post_id": 27086, "ts": "2026-07-12T10:29:45Z", "hours": 6.4975, "text": "This is going to be the equivalent of 2 devlogs since I thought I made one earlier for persists but I didn’t. New feature! We now handle persist items in order to store data between versions. These are files which are persisted between versions of an app. Lets take git as an example to explain why persist exists. Say you want to make sure your git config isn’t deleted every time you update. The issue with this is that the config file is saved in the version specfic directory. To resolve this we can keep the config in $MOCHA_DIR/persist and then symlink the config to where it needs to be, which is essentially what persist tells us to do. Since we handled persist items last time we can now implement mocha upgrade to update apps. The way scoop handles updates is by first removing anything that references the app, like shortcuts or shims . Then we just follow the install process from scratch. This leaves the old version available in case a user wants to revert versions due to a bug, while also updating to the latest available version. This can be seen in the video below, which shows me updating llama.cpp-hip-radeon ."}, {"post_id": 23572, "ts": "2026-07-06T16:39:13Z", "hours": 3.53, "text": "We now create shortcuts! This means any GUI apps should show up properly in the start menu, just like they do when you install with scoop . All I really had to do was a bit of orchestration since I decided to vendor in an implementation from https://github.com/jxeng/shortcut Besides that I expanded the number of apps that are supported by implementing a bit of code that handle architecture specific bin fields, along with bin fields which store 2D arrays. I also cleared up some of the TODO items. I swapped the junction implementation to an implementation from https://github.com/nyaosorg/go-windows-junction since we were previously shelling out to CLI. That and I added a bit more zip bomb protection For the purposes of the video below I changed the location which shortcuts get put to my desktop. It’ll probably be configurable, and match scoop by putting shortcuts in the startup menu by default"}, {"post_id": 22839, "ts": "2026-07-05T13:36:18Z", "hours": 3.3089, "text": "As I mentioned in the previous devlog I added good help information to every bit of the CLI. It’s surprisingly difficult to write good help messages which explains everything to users in a few words I also changed the behaviour of the mocha cache clear command to not clear all cache by default. That’s now gated behind the --all flag in order to match scoop a bit more"}, {"post_id": 21420, "ts": "2026-07-03T11:02:24Z", "hours": 1.0722, "text": "Typically I don’t want to make devlogs for small stuff like this, but this is something I found really cool. So I was working on help messages for all the commands when I realized that mocha bucket list felt a bit slower than pretty much every other command. This is because we need to shell out to git 2 times per bucket, and I had 4 buckets added. While 8 git commands might not sound like a lot, it was enough to make mocha bucket list feel slow. So what I did is I parallelized the metadata fetching through an errgroup . Instead of fetching the metadata for each bucket in order, we fetch the metadata for all 4 buckets simultaneously. This led to a big performance uplift. About 3 times faster than the old version of mocha , and just over 12 times faster than scoop for this operation. See the video below."}, {"post_id": 21386, "ts": "2026-07-03T09:17:07Z", "hours": 2.2464, "text": "I finished up mocha uninstall and mocha list , which means you can actually manage installed apps instead of manually deleting them. There’s not much that goes into mocha uninstall . You just need to remove the relevant shims and app directories since the apps that mocha supports are all portable. mocha list is similarly simple. It’s just loops over the directories in $MOCHA_DIR/apps and looks for apps along with the versions installed for each app."}, {"post_id": 19910, "ts": "2026-07-01T10:53:02Z", "hours": 5.4625, "text": "So I added support for more apps by implementing more extractors. This means in theory any apps which don’t need a pre-install or post-install should work. To be more specific, I handle a few more properties on manifests. Those being extract_dir and innosetup , which inform how an app needs to be installed. I also implement 7zip and innounp as extractors to support more file formats which applications are distributed in. Of course there’s still a lot of work before I consider this ready for public use. I need to create commands for some basic operations like uninstalling, updating and listing apps. I also need to handle shortcuts otherwise GUI apps can’t be accessed from the start menu. Besides that I need to improve the user experience. As you can see in the video below mocha just sort of dumps everything to the console even if it’s not relevant. Help menus are also critical to get working properly."}, {"post_id": 18238, "ts": "2026-06-29T09:51:16Z", "hours": 3.7839, "text": "Finished up the code cleanup in commands , fileops and manifests . I did catch a few edge cases and some incorrect behavior in the process, which is why I always spend so much time reviewing code. I did use AI to assist with code review because I think it’s an area where AI shines. AI is really good at finding small errors or inconsistencies in the codebase which I probably wouldn’t notice. For example, it identified that the ManifestReferences argument was not a required argument for the download command, which meant no help message was displayed on incorrect usage like the other commands. One big thing I will work on eventually is console output. Right now errors are well formatted but a lot of the time commands just run stuff without providing a lot of insight into what actions they are taking which isn’t great. Even the help menu is pretty useless right now (see the image below). Extra context: A manifest reference is a pointer to an app (e.g. main/ [email protected] )"}, {"post_id": 17027, "ts": "2026-06-27T17:10:53Z", "hours": 5.3025, "text": "Before working on more features and expanding the amount of apps mocha actually supports I wanted to go through the codebase and do a lot of cleanup since the codebase is quite messy. There are silly mistakes in some files and bad implementations in others. Hence the time I spent during this period was focused on moving code to where it should be and cleaning up some edge cases, specifically related to the bucket , config and shim modules. A good example of this is moving the code to get the active config to the config module instead of leaving it in main.go . Next up will be refactoring the commands , fileops , and manifest modules. I don’t have much to show so I figured I would present a feature I added but didn’t show earlier: the ability to skip cache hits with the --force flag when installing or downloading an app. Some context I forgot to add initially: I renamed the app module to manifest since I felt it was more accurate to what it actually handles scope wise."}, {"post_id": 15814, "ts": "2026-06-25T18:17:50Z", "hours": 2.5558, "text": "Huge milestone!!! I’ve gotten mocha install working for very basic apps! This means the entire process of downloading a file, then extracting it, then creating a junction and finally creating a shim now works for basic pieces of software! So in terms of what I actually did this devlog, I added cache hits to the download command since it’s relevant to the install command. I then implemented the aforementioned .zip extraction and junction creation. Then all that was left was a bit of orchestration, getting everything to work together properly. See a working install of innounp using mocha install below!"}, {"post_id": 15668, "ts": "2026-06-25T14:03:10Z", "hours": 0.7572, "text": "mocha update is another command which does very little but is very important. All it does is update the known_buckets file, and run git pull on all added buckets to update them. It can also update just the buckets you specify if you pass in an argument. I do need to improve the output of the command since it outputs raw git right now, but at least it’s functional. See the demo below."}, {"post_id": 14392, "ts": "2026-06-23T14:41:51Z", "hours": 6.9436, "text": "Spent a bit longer between devlogs this time, but it was worth it. So I realized the error messages were really bad. I was pretty much just passing errors up the call stack without adding any context, which isn’t great since it means our error messages will be useless to people reading them I therefore went through every single file of the codebase and wrote good error messages which add a bit of context every time we pass it up the call stack. I also did a bit of refactoring where I thought it would be worth it. For example in the shim module I now set the PE subsystem of the shim binary while it’s in memory instead of writing to disk twice. A few good examples of what the new error messages look like can be seen in the video below."}, {"post_id": 13054, "ts": "2026-06-21T10:47:05Z", "hours": 3.4069, "text": "Shims are simple in concept, complicated in reality. So essentially a shim in mocha is just an executable which calls another executable. It’s similar to a shortcut in that sense, except it shows up in $PATH Thankfully the scoop project already has a repository with 4 different implementations for the shim binary, so I can just have mocha shim download one of those binaries. The complicated part was the PE Subsystem. The PE subsystem is basically a bit of info in each binary which tells Windows whether it’s a console application, or a GUI application. We need to set the PE subsystem of the shim exe to the PE subsystem of the binary we are calling for Windows to execute the binary properly. Hence I need to read and write raw binary data. All of this is just the implementation for exe shims. Scoop itself contains implementations for .bat/.cmd , .ps1 , .jar , .py and linux binaries , all of which have wildly different implementations compared to .exe shims. The video below shows the working set of mocha shim commands (those being add , remove and list )."}, {"post_id": 12032, "ts": "2026-06-19T16:57:37Z", "hours": 1.8778, "text": "mocha cache is a simple command. It shows you what files are currently in $MOCHA_DIR/cache directory and it clears them out. One thing I noticed was that scoop cache show actually displays raw bytes instead of human readable file sizes for each cache entry, which is a bit odd since the total they display is human readable. Therefore I made my implementation mocha cache list display human readable sizes since that’s a more reasonable default."}, {"post_id": 11234, "ts": "2026-06-18T11:50:44Z", "hours": 2.2589, "text": "Fuzzy search is really really good. While implementing mocha search I noticed the results returned by scoop search were in alphabetical order, which doesn’t make a lot of sense. If I do scoop search git the first result should probably be git As a result my implementation of search uses github.com/sahilm/fuzzy which is a small library which provides a fuzzy search implementation. Scoop also checks for binary name matches, e.g. package biodiff can provide a binary called git-biodiff and show up in search results. I decided to remove this for now, since I personally find it a bit unnecessary. scoop search also lists all search results, which is okay when results are sorted alphabetically but doesn’t make sense when searches are relevance based. Therefore, by default mocha search will list exact matches plus the 20 most relevant search results. This can be overridden by the --count argument, where setting it to 0 displays all results. A demonstration of mocha search vs scoop search can be seen in the video below."}, {"post_id": 10748, "ts": "2026-06-17T17:14:41Z", "hours": 2.1597, "text": "I finished up mocha download , which surprisingly does a bit more than simply downloading files. The first thing it does is well… download the file. This is a bit more complicated than it seems though, since we need to identify the right file to download based on cpu architecture. Hence the very cursed JSON parsing I had to create. After downloading a file, we also do a hash check. We support the 4 types of file hashes which scoop support, those being sha256 , sha512 , md5 and sha1 . Currently files get downloaded to the $MOCHA_DIR/cache directory like in scoop, however we don’t actually check if there’s anything cached which can lead to repeated downloads. That’s something I’ll need to fix later on"}, {"post_id": 10131, "ts": "2026-06-16T18:54:22Z", "hours": 1.4081, "text": "I was working on the mocha download command so I can sort out fetching files, and during it I realized my current app format makes things a bit weird. mocha cat previously took in a flag for bucket through -b and a name. Scoop on the other hand uses an application reference in the format bucket/name@version . Scoop’s format is really important for downloads and installs, so it didn’t make sense to not standardize it between mocha download and mocha cat . Hence this shorter devlog! See the video below for the new usage (version numbers are ignored for mocha cat )."}, {"post_id": 10004, "ts": "2026-06-16T15:21:57Z", "hours": 2.9753, "text": "I did a bit of refactoring to split the core functionality from the command files. This means that the code for downloading and deleting buckets is separated from the code for the various commands. I’m doing this primarily for better code organization, and also to prevent import cycles. I also finished up the config system I mentioned last time. It’ll be one of the bigger improvements over scoop, which has a basic set of configuration options. TOML was the obvious choice for the config format since it is really easy to read and write. I made sure that you can put it in any of the standard locations, such as %APPDATA% and .config or in $MOCHA_DIR . Running mocha config will open the configuration in your preferred app, and also generate the default config if a configuration hasn’t been detected in any of the valid locations. Currently the configuration can be used to make mocha cat run an external program for printing manifests to stdout . See the video below for an example using bat"}, {"post_id": 8826, "ts": "2026-06-14T17:52:54Z", "hours": 2.6147, "text": "So this is a spot where I think the improvements over scoop start becoming really apparent. The scoop cat command simply prints an app’s manifest to console. However due to the long startup time of PowerShell scripts (scoop is written in PowerShell) basic stuff like scoop cat takes a second. mocha cat on the other hand is nearly instantaneous since it’s a compiled binary with almost 0 startup time. You can see how this plays out in real usage in the video below. I also half baked a config system, but it’s not finished so I’ll talk about that in the next devlog."}, {"post_id": 8586, "ts": "2026-06-14T08:48:35Z", "hours": 2.85, "text": "I finished off the remaining mocha bucket subcommands, those being add , rm and list . These commands manage “buckets” which are pretty much just package sources. mocha bucket add uses git to clone the relevant bucket into the [MOCHA_DIR]/buckets directory. By default MOCHA_DIR is [USER]/mocha mocha bucket list simply loops over the [MOCHA_DIR]/buckets directory and gets relevant info for each bucket. mocha bucket rm removes a bucket by just deleting the folder containing the bucket. For example, removing the main bucket deletes [MOCHA_DIR]/buckets/main"}, {"post_id": 8208, "ts": "2026-06-13T17:32:25Z", "hours": 2.0261, "text": "I started off with something a bit simple: mocha bucket known The known bucket list in scoop is a list of buckets which are known by the package manager in advance. These buckets don’t require the full URL to be used when using scoop bucket sub-commands. For example instead of running scoop bucket add https://github.com/ScoopInstaller/Main you can instead run scoop bucket add main As seen in the video below, mocha bucket known doesn’t do much. First it downloads buckets.json if it doesn’t exist. Then it parses the json and outputs it to console."}]...
|
Title: mocha by @Glitchy | Stardance
Devlogs:
I s Title: mocha by @Glitchy | Stardance
Devlogs:
I started off with something a bit simple: mocha bucket known The known bucket list in scoop is a list of buckets which are known by the package manager in advance. These buckets don’t require the full URL to be used when using scoop bucket sub-commands. For example instead of running scoop bucket add https://github.com/ScoopInstaller/Main you can instead run scoop bucket add main As seen in the video below, mocha bucket known doesn’t do much. First it downloads buckets.json if it doesn’t exist. Then it parses the json and outputs it to console.
I finished off the remaining mocha bucket subcommands, those being add , rm and list . These commands manage “buckets” which are pretty much just package sources. mocha bucket add uses git to clone the relevant bucket into the [MOCHA_DIR]/buckets directory. By default MOCHA_DIR is [USER]/mocha mocha bucket list simply loops over the [MOCHA_DIR]/buckets directory and gets relevant info for each bucket. mocha bucket rm removes a bucket by just deleting the folder containing the bucket. For example, removing the main bucket deletes [MOCHA_DIR]/buckets/main
So this is a spot where I think the improvements over scoop start becoming really apparent. The scoop cat command simply prints an app’s manifest to console. However due to the long startup time of PowerShell scripts (scoop is written in PowerShell) basic stuff like scoop cat takes a second. mocha cat on the other hand is nearly instantaneous since it’s a compiled binary with almost 0 startup time. You can see how this plays out in real usage in the video below. I also half baked a config system, but it’s not finished so I’ll talk about that in the next devlog.
I did a bit of refactoring to split the core functionality from the command files. This means that the code for downloading and deleting buckets is separated from the code for the various commands. I’m doing this primarily for better code organization, and also to prevent import cycles. I also finished up the config system I mentioned last time. It’ll be one of the bigger improvements over scoop, which has a basic set of configuration options. TOML was the obvious choice for the config format since it is really easy to read and write. I made sure that you can put it in any of the standard locations, such as %APPDATA% and .config or in $MOCHA_DIR . Running mocha config will open the configuration in your preferred app, and also generate the default config if a configuration hasn’t been detected in any of the valid locations. Currently the configuration can be used to make mocha cat run an external program for printing manifests to stdout . See the video below for an example using bat
I was working on the mocha download command so I can sort out fetching files, and during it I realized my current app format makes things a bit weird. mocha cat previously took in a flag for bucket through -b and a name. Scoop on the other hand uses an application reference in the format bucket/name@version . Scoop’s format is really important for downloads and installs, so it didn’t make sense to not standardize it between mocha download and mocha cat . Hence this shorter devlog! See the video below for the new usage (version numbers are ignored for mocha cat ).
I finished up mocha download , which surprisingly does a bit more than simply downloading files. The first thing it does is well… download the file. This is a bit more complicated than it seems though, since we need to identify the right file to download based on cpu architecture. Hence the very cursed JSON parsing I had to create. After downloading a file, we also do a hash check. We support the 4 types of file hashes which scoop support, those being sha256 , sha512 , md5 and sha1 . Currently files get downloaded to the $MOCHA_DIR/cache directory like in scoop, however we don’t actually check if there’s anything cached which can lead to repeated downloads. That’s something I’ll need to fix later on
Fuzzy search is really really good. While implementing mocha search I noticed the results returned by scoop search were in alphabetical order, which doesn’t make a lot of sense. If I do scoop search git the first result should probably be git As a result my implementation of search uses github.com/sahilm/fuzzy which is a small library which provides a fuzzy search implementation. Scoop also checks for binary name matches, e.g. package biodiff can provide a binary called git-biodiff and show up in search results. I decided to remove this for now, since I personally find it a bit unnecessary. scoop search also lists all search results, which is okay when results are sorted alphabetically but doesn’t make sense when searches are relevance based. Therefore, by default mocha search will list exact matches plus the 20 most relevant search results. This can be overridden by the --count argument, where setting it to 0 displays all results. A demonstration of mocha search vs scoop search can be seen in the video below.
mocha cache is a simple command. It shows you what files are currently in $MOCHA_DIR/cache directory and it clears them out. One thing I noticed was that scoop cache show actually displays raw bytes instead of human readable file sizes for each cache entry, which is a bit odd since the total they display is human readable. Therefore I made my implementation mocha cache list display human readable sizes since that’s a more reasonable default.
Shims are simple in concept, complicated in reality. So essentially a shim in mocha is just an executable which calls another executable. It’s similar to a shortcut in that sense, except it shows up in $PATH Thankfully the scoop project already has a repository with 4 different implementations for the shim binary, so I can just have mocha shim download one of those binaries. The complicated part was the PE Subsystem. The PE subsystem is basically a bit of info in each binary which tells Windows whether it’s a console application, or a GUI application. We need to set the PE subsystem of the shim exe to the PE subsystem of the binary we are calling for Windows to execute the binary properly. Hence I need to read and write raw binary data. All of this is just the implementation for exe shims. Scoop itself contains implementations for .bat/.cmd , .ps1 , .jar , .py and linux binaries , all of which have wildly different implementations compared to .exe shims. The video below shows the working set of mocha shim commands (those being add , remove and list ).
Spent a bit longer between devlogs this time, but it was worth it. So I realized the error messages were really bad. I was pretty much just passing errors up the call stack without adding any context, which isn’t great since it means our error messages will be useless to people reading them I therefore went through every single file of the codebase and wrote good error messages which add a bit of context every time we pass it up the call stack. I also did a bit of refactoring where I thought it would be worth it. For example in the shim module I now set the PE subsystem of the shim binary while it’s in memory instead of writing to disk twice. A few good examples of what the new error messages look like can be seen in the video below.
mocha update is another command which does very little but is very important. All it does is update the known_buckets file, and run git pull on all added buckets to update them. It can also update just the buckets you specify if you pass in an argument. I do need to improve the output of the command since it outputs raw git right now, but at least it’s functional. See the demo below.
Huge milestone!!! I’ve gotten mocha install working for very basic apps! This means the entire process of downloading a file, then extracting it, then creating a junction and finally creating a shim now works for basic pieces of software! So in terms of what I actually did this devlog, I added cache hits to the download command since it’s relevant to the install command. I then implemented the aforementioned .zip extraction and junction creation. Then all that was left was a bit of orchestration, getting everything to work together properly. See a working install of innounp using mocha install below!
Before working on more features and expanding the amount of apps mocha actually supports I wanted to go through the codebase and do a lot of cleanup since the codebase is quite messy. There are silly mistakes in some files and bad implementations in others. Hence the time I spent during this period was focused on moving code to where it should be and cleaning up some edge cases, specifically related to the bucket , config and shim modules. A good example of this is moving the code to get the active config to the config module instead of leaving it in main.go . Next up will be refactoring the commands , fileops , and manifest modules. I don’t have much to show so I figured I would present a feature I added but didn’t show earlier: the ability to skip cache hits with the --force flag when installing or downloading an app. Some context I forgot to add initially: I renamed the app module to manifest since I felt it was more accurate to what it actually handles scope wise.
Finished up the code cleanup in commands , fileops and manifests . I did catch a few edge cases and some incorrect behavior in the process, which is why I always spend so much time reviewing code. I did use AI to assist with code review because I think it’s an area where AI shines. AI is really good at finding small errors or inconsistencies in the codebase which I probably wouldn’t notice. For example, it identified that the ManifestReferences argument was not a required argument for the download command, which meant no help message was displayed on incorrect usage like the other commands. One big thing I will work on eventually is console output. Right now errors are well formatted but a lot of the time commands just run stuff without providing a lot of insight into what actions they are taking which isn’t great. Even the help menu is pretty useless right now (see the image below). Extra context: A manifest reference is a pointer to an app (e.g. main/ [email protected] )
So I added support for more apps by implementing more extractors. This means in theory any apps which don’t need a pre-install or post-install should work. To be more specific, I handle a few more properties on manifests. Those being extract_dir and innosetup , which inform how an app needs to be installed. I also implement 7zip and innounp as extractors to support more file formats which applications are distributed in. Of course there’s still a lot of work before I consider this ready for public use. I need to create commands for some basic operations like uninstalling, updating and listing apps. I also need to handle shortcuts otherwise GUI apps can’t be accessed from the start menu. Besides that I need to improve the user experience. As you can see in the video below mocha just sort of dumps everything to the console even if it’s not relevant. Help menus are also critical to get working properly.
I finished up mocha uninstall and mocha list , which means you can actually manage installed apps instead of manually deleting them. There’s not much that goes into mocha uninstall . You just need to remove the relevant shims and app directories since the apps that mocha supports are all portable. mocha list is similarly simple. It’s just loops over the directories in $MOCHA_DIR/apps and looks for apps along with the versions installed for each app.
Typically I don’t want to make devlogs for small stuff like this, but this is something I found really cool. So I was working on help messages for all the commands when I realized that mocha bucket list felt a bit slower than pretty much every other command. This is because we need to shell out to git 2 times per bucket, and I had 4 buckets added. While 8 git commands might not sound like a lot, it was enough to make mocha bucket list feel slow. So what I did is I parallelized the metadata fetching through an errgroup . Instead of fetching the metadata for each bucket in order, we fetch the metadata for all 4 buckets simultaneously. This led to a big performance uplift. About 3 times faster than the old version of mocha , and just over 12 times faster than scoop for this operation. See the video below.
As I mentioned in the previous devlog I added good help information to every bit of the CLI. It’s surprisingly difficult to write good help messages which explains everything to users in a few words I also changed the behaviour of the mocha cache clear command to not clear all cache by default. That’s now gated behind the --all flag in order to match scoop a bit more
We now create shortcuts! This means any GUI apps should show up properly in the start menu, just like they do when you install with scoop . All I really had to do was a bit of orchestration since I decided to vendor in an implementation from https://github.com/jxeng/shortcut Besides that I expanded the number of apps that are supported by implementing a bit of code that handle architecture specific bin fields, along with bin fields which store 2D arrays. I also cleared up some of the TODO items. I swapped the junction implementation to an implementation from https://github.com/nyaosorg/go-windows-junction since we were previously shelling out to CLI. That and I added a bit more zip bomb protection For the purposes of the video below I changed the location which shortcuts get put to my desktop. It’ll probably be configurable, and match scoop by putting shortcuts in the startup menu by default
This is going to be the equivalent of 2 devlogs since I thought I made one earlier for persists but I didn’t. New feature! We now handle persist items in order to store data between versions. These are files which are persisted between versions of an app. Lets take git as an example to explain why persist exists. Say you want to make sure your git config isn’t deleted every time you update. The issue with this is that the config file is saved in the version specfic directory. To resolve this we can keep the config in $MOCHA_DIR/persist and then symlink the config to where it needs to be, which is essentially what persist tells us to do. Since we handled persist items last time we can now implement mocha upgrade to update apps. The way scoop handles updates is by first removing anything that references the app, like shortcuts or shims . Then we just follow the install process from scratch. This leaves the old version available in case a user wants to revert versions due to a bug, while also updating to the latest available version. This can be seen in the video below, which shows me updating llama.cpp-hip-radeon .
So I’ve been doing a bit of refactoring, a bit of bug fixing and a bit of optimization. Essentially just polishing mocha before I work on the next feature. Here’s some of the stuff I did: created tests for ParseRefString to validate behavior cache manifest json between info calls since I/O is really slow bumped dependency versions refactored manifest/info.go Besides that I fixed the uninstall flow since it was really bugged after the latest changes. Essentially mocha would uninstall apps with incorrect info. It would also try to remove shims/shortcuts for apps which don’t have any active shims/shortcuts. I then added a bit of logging since the uninstall command didn’t give any user output for whatever reason (i forgot to earlier).
mocha now supports a user defined theme for output colors. In the process I ended up doing a lot of stuff related to the config. First thing I did was swap to fatih/color for colored output, since it handles stuff like colors in command prompt and removing color when output is piped. Then I refactored the config module. Earlier I would pass around a MochaConfiguration object through every function. Now I use a config singleton that’s accessible from any function. Why? Because it means I don’t need to pass the object every time I want to log information. Also means I don’t need to pass mochaDir through almost every function in the codebase. Getting user defined themes was a bit complicated because I needed a good way to handle a default theme so output doesn’t look bad if parsing fails. I handled this by only using the configured theme if every color resolves properly. Otherwise output falls back to the already loaded default theme. Due to this you still get colored output even if there are errors or warning before the configuration and theme is loaded.
I love refactoring!!!! I’ll probably end up spending another 20 hours just on refactoring because it’s so fun!!!! This time around I wanted to refactor the code so that our commands orchestrate stuff instead of the helper functions. For example, pkg.Install would first download a package, then install it, and then link it through shims and shortcuts all by itself. This causes issues because it means error messages become slightly worse, and it creates a class of bugs due to edge cases where we don’t necessarily want this order of orchestration. Hence I did a lot of refactoring in the pkg module. I also ended up adding a way to skip verification of downloads when downloading, installing or updating a package through --skip-verify . It’s a useful option in situations where there is a malformed manifest or simply no hash to begin with.
I’m writing this one right before F1 Qualifying at Spa! Continuing with the trend of some of my recent work, I improved what table outputs look like to be a little bit more readable. We now use proper separators in the form of Unicode Box Drawing Characters . I also made column alignment configurable, which improves legibility for some commands like mocha bucket list and mocha cache show . I’ve attached an image of the scoop and mocha versions of bucket list so you can compare for yourself.
Not sure why I didn’t do this earlier, but I’ve added success messages to commands where it makes sense. Also added a success color to the config so you can change what the success color is. I do still need to improve CLI output quite a bit, but it’s slowly getting there.
My summer break has ended so development is going to be a lot slower from now. I added mocha outdated so you can list outdated apps before upgrading them to a newer version. Besides that I tweaked a lot of stuff related to CLI output. For example I changed search to output one table, and simply outputting exact matches at the top of that table. I also changed a lot of messages which were using LogOutput to LogInfo so they use the correct color and output to stderr and not stdout .
Finally got a bit of time to do a bit of development. First thing I did was remove a field from install.json to match scoop . This means that mocha should be a drop in replacement for existing scoop installs. Then I added partial support for env_set and env_add_path . The main thing I need to do to complete the feature is parse variables and replace them with the appropriate paths. These 2 fields are some of the last manifest fields I need to support besides pre/post (un)install hooks.
Lot of time going into this devlog, but it makes sense since I did do a lot. I did this sweeping refactor of the entire commands module which moved around a lot of code. Essentially each command now gets it’s own directory under the commands module that represents it’s children/parents. For example commands/shim/remove/cmd.go contains code for the mocha shim remove command. Each cmd.go contains a Command struct that has the relevant fields and functions attached to it. This structure just makes things more organized and also means adding test files will be a bit easier since functionality is now isolated. I also sorted out the shim binary. So essentially https://github.com/ScoopInstaller/Shim offers different version of the shim binary which can be installed. Previously I hard coded the code to install cpp v0.1.0 but now users can run mocha shim binary releases to see the options and mocha shim binary setup to install their chosen binary. This also means we actually get the latest releases from GitHub.
Lots of small bug fixes and changes, I’ll just list them out: feat(cmd): allow removal of multiple shims in one execution (f2fae3f) fix(manifest): correctly ignore invalid shortcut entries (6a08478) fix(fileops): use correct registry type (5d5d796) fix(config): seed config with defaults (9dfaaff) fix(cmd): use correct release sources (a2a9ba1) fix(cmd): use bucket from install info (5a9109b) I also added support for more file types being shimmed, which helps a lot with compatibility. The file types are .py , .bat , .cmd , .jar and .ps1 .
I forgot to make a devlog in between so this will be like 2 bigger devlogs. I parallelized bucket updates, which speeds it up quite a bit. This also allowed me to try out parallelism even more, which I plan to apply throughout the CLI later on. I also added configuration options for the runners which mocha shim will use to run certain file types. For example, you can set the python-runner to select the python version that’ll be used to run python scripts that are shimmed. Downloads now have a progress bar, so you don’t need to wonder whether something is happening or not during a long download. Finally env_set is fully supported since I added the relevant variable parsing. This was pretty much just me cleaning out the TODO list before I ship. I also did a lot of smaller bug fixes and refactors as seen below. fix(commands): prevent app installation if already installed (cb27d07) fix(commands): fix config opening with “start” (74f3679) fix(commands): correctly handle non-apps when upgrading (f7419f6) fix: make LogOutput go to Stdout not Stderr (bc10357) fix: handle empty versions correctly (2287da9) fix(pkg): remove correct temp dir (33189b6) fix(shim): warn for unknown shim extension (622c2b4) fix: skip downloads with no hash by default (69d4e35) fix: use correct timeout for downloads (44e527b) fix: drop unnecessary return value from GetExecutableEntries (9fd845c) fix(config): remove unused option (1339971) fix(commands): don’t error for valid results (87c4d6c) refactor(config): rename variables/functions (f253d9d) fix: use unique temp directories (a159e23) refactor: use fmt.Fprintln directly (d2d54bf)
So I wrote a README, added a license (MIT of course) and setup CI/CD so that releases are automatically built and deployed. Honestly I forgot how hard it is to write a good README. You need to get a lot of information through without it looking like a wall of text.
Ships:
I made a package manager for Windows, which is somewhat backwards compatible with scoop packages. To be honest there’s still a lot of work that I want to do, but I have exams and college application coming up soon so I can’t. That’s not to say I’m not happy with the state of the ship. At the very least it has all the core features that a package manager should have, but there are still a lot of bugs which is why this is only v0.0.1. The biggest challenge by far was trying to figure out how Scoop does things internally. A lot of stuff just doesn’t have documentation, so you have to dig through the really messy PowerShell source code....
|
1793350641.8101447
|
1793437041.8101447
|
|
1892
|
mobile tool by @Jk098 | Stardance
|
Jk098
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mobile tool by @Jk098 | Stardance
|
1793256478.5028615
|
1793861278.5028615
|
|
8850
|
moayed-game by @moayed_jouini | Stardance
|
moayed_jouini
|
0
|
0.0
|
0
|
[]
|
[{"post_id": 3016, "ts": "2026 [{"post_id": 3016, "ts": "2026-06-05T22:53:12Z", "hours": 0.0, "text": "that’s crazy to see my work in 1h"}]...
|
Title: moayed-game by @moayed_jouini | Stardance
Title: moayed-game by @moayed_jouini | Stardance
Devlogs:
that’s crazy to see my work in 1h...
|
1793494157.5588303
|
1794098957.5588303
|
|
69867
|
mm my website by @ashwin8630 | Stardance
|
ashwin8630
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mm my website by @ashwin8630 | Stardance
|
1792878646.0667226
|
1793483446.0667226
|