|
59324
|
website by @Huzaifah_Iswardi | Stardance
|
Huzaifah_Iswardi
|
2
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T09:55:26Z", "hours": 0.0, "multiplier": 1.03, "payout": 0, "blessing": "neutral", "text": "here i make my very own personal website. its very personal to me :p. this website is divided to 4 section about me 2.projects 3.father information 4.contact info check out my project at :- https://fah67425.github.io/animated-octo-journey/", "repo": "https://github.com/fah67425/animated-octo-journey", "demo": "https://fah67425.github.io/animated-octo-journey/"}, {"ship_num": 2, "ts": "2026-09-09T13:32:42Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Here i make a personal website.Its very personal to me :p. I love when its time to get creative at the css part.There is 4 sections : About me My project Father information Contact information Im very happy to complete and ship this project. You can try it at :- https://fah67425.github.io/animated-octo-journey/ Hope to get response soon!", "repo": "https://github.com/fah67425/animated-octo-journey", "demo": "https://fah67425.github.io/animated-octo-journey/"}]...
|
[{"post_id": 65285, "ts": "202 [{"post_id": 65285, "ts": "2026-09-10T09:52:47Z", "hours": 0.2967, "text": "frfrrgr"}, {"post_id": 64756, "ts": "2026-09-09T12:11:44Z", "hours": 0.2897, "text": "im working on my website. its very personal"}]...
|
Title: website by @Huzaifah_Iswardi | Stardance
D Title: website by @Huzaifah_Iswardi | Stardance
Devlogs:
im working on my website. its very personal
frfrrgr
Ships:
Here i make a personal website.Its very personal to me :p. I love when its time to get creative at the css part.There is 4 sections : About me My project Father information Contact information Im very happy to complete and ship this project. You can try it at :- https://fah67425.github.io/animated-octo-journey/ Hope to get response soon!
here i make my very own personal website. its very personal to me :p. this website is divided to 4 section about me 2.projects 3.father information 4.contact info check out my project at :- https://fah67425.github.io/animated-octo-journey/...
|
1793541329.2940443
|
1793627729.2940443
|
|
49194
|
Echo by @XDabXking | Stardance
|
XDabXking
|
2
|
13.62
|
118
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T05:53:19Z", "hours": 3.0, "multiplier": 14.99, "payout": 47, "blessing": "neutral", "text": "I trying to get my 3h of coding worth so ya I already shipped the code and ya go check it out", "repo": "https://github.com/madhavsingla2013-dev/Echo", "demo": "https://echo-gameplatform.netlify.app/"}, {"ship_num": 2, "ts": "2026-08-19T13:16:26Z", "hours": 7.0, "multiplier": 10.72, "payout": 71, "blessing": "neutral", "text": "FINISHED THE CODING, finally fixed the movable platform bug, customization, 30 levels + tutorial… and ya", "repo": "https://github.com/madhavsingla2013-dev/Echo", "demo": "https://echo-gameplatform.netlify.app/"}]...
|
[{"post_id": 65289, "ts": "202 [{"post_id": 65289, "ts": "2026-09-10T10:08:29Z", "hours": 0.4, "text": "QUICK QUESTION, Does anyone have any ideas for new level bc im gonna back the boss level 50 and i only made like 35 so need 15 more. https://forms.gle/PKT7rTeT9SxwZBNk8"}, {"post_id": 65281, "ts": "2026-09-10T09:33:20Z", "hours": 2.2119, "text": "Im working on a basic boss level, gonna try to make it a bit harder and make the boss like the Undertale flower boss and red ball 2 boss combined"}, {"post_id": 64971, "ts": "2026-09-09T18:33:55Z", "hours": 0.36, "text": "I addded few more items and a boss level im working on"}, {"post_id": 64751, "ts": "2026-09-09T12:01:15Z", "hours": 0.6447, "text": "im working on a shop and coin algorithm, so say tuned"}, {"post_id": 58679, "ts": "2026-08-31T05:51:37Z", "hours": 3.1256, "text": "I have 3h for a project i have not touched in a week"}, {"post_id": 50282, "ts": "2026-08-19T13:15:05Z", "hours": 2.5583, "text": "I finally fixed the bug, Added 15 levels and a end screen"}, {"post_id": 49812, "ts": "2026-08-18T19:12:36Z", "hours": 0.6017, "text": "I CANT DO THIS, Can sm1 please help me fix the platform bug in my game.. The core issue comes down to a deterministic drift between frame based playback and time based math, but idk how to fix it"}, {"post_id": 49475, "ts": "2026-08-18T10:33:15Z", "hours": 1.8642, "text": "15 levels + tutorial but need to fix a bug with the platforms, also gonna add more customization"}, {"post_id": 49410, "ts": "2026-08-18T07:08:18Z", "hours": 1.3475, "text": "I am working on fixing bugs with the platform smother movement and more levels"}, {"post_id": 48840, "ts": "2026-08-17T11:59:50Z", "hours": 0.2506, "text": "im working on a game called echo"}]...
|
Title: Echo by @XDabXking | Stardance
Devlogs:
im Title: Echo by @XDabXking | Stardance
Devlogs:
im working on a game called echo
I am working on fixing bugs with the platform smother movement and more levels
15 levels + tutorial but need to fix a bug with the platforms, also gonna add more customization
I CANT DO THIS, Can sm1 please help me fix the platform bug in my game.. The core issue comes down to a deterministic drift between frame based playback and time based math, but idk how to fix it
I finally fixed the bug, Added 15 levels and a end screen
I have 3h for a project i have not touched in a week
im working on a shop and coin algorithm, so say tuned
I addded few more items and a boss level im working on
Im working on a basic boss level, gonna try to make it a bit harder and make the boss like the Undertale flower boss and red ball 2 boss combined
QUICK QUESTION, Does anyone have any ideas for new level bc im gonna back the boss level 50 and i only made like 35 so need 15 more. https://forms.gle/PKT7rTeT9SxwZBNk8
Ships:
FINISHED THE CODING, finally fixed the movable platform bug, customization, 30 levels + tutorial… and ya
I trying to get my 3h of coding worth so ya I already shipped the code and ya go check it out...
|
1792878589.0444999
|
1793742589.0444999
|
|
60037
|
Cloud by @akanksha | Stardance
|
akanksha
|
0
|
3.37
|
0
|
[]
|
[{"post_id": 65291, "ts": "202 [{"post_id": 65291, "ts": "2026-09-10T10:15:42Z", "hours": 1.4336, "text": "Finished designing the PCB for the clock."}, {"post_id": 64827, "ts": "2026-09-09T14:40:16Z", "hours": 0.3672, "text": "part 1 of routing the pcb for the Cloud Clock."}, {"post_id": 64687, "ts": "2026-09-09T08:50:13Z", "hours": 1.5642, "text": "Cloud ( an alarm clock) i finished doing the schematic someone let me know if its wrong."}]...
|
Title: Cloud by @akanksha | Stardance
Devlogs:
Cl Title: Cloud by @akanksha | Stardance
Devlogs:
Cloud ( an alarm clock) i finished doing the schematic someone let me know if its wrong.
part 1 of routing the pcb for the Cloud Clock.
Finished designing the PCB for the clock....
|
1793030064.6253796
|
1793634864.6253796
|
|
53325
|
Slack bot by @Adhyan | Stardance
|
Adhyan
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T17:26:12Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot which responds to basic commands. The most challenging part of making this was that i am doing something like this for the first time and the instructions are super hard to follow especially when you don’t know anything related to it. i am most proud of the fact that in the 14 yrs of my existence i finally made something of my own. to test my project please click on the demo URL provided and type /the-bot-help to see all the available commands and what do they do and from there you can execute any of the commands available. thank for checking this project out.", "repo": "https://github.com/AdhyanAgarwal/my_first_slack_bot-D", "demo": "https://hackclub.enterprise.slack.com/archives/C0C19Q7SP53"}]...
|
[{"post_id": 65295, "ts": "202 [{"post_id": 65295, "ts": "2026-09-10T10:28:02Z", "hours": 0.495, "text": "Just completed section 6 of the guide i am trying to verify my identity to continue from section 7. the bot runs locally because i don’t yet have a nest account :( It responds to simple command:)"}]...
|
Title: Slack bot by @Adhyan | Stardance
Devlogs:
Title: Slack bot by @Adhyan | Stardance
Devlogs:
Just completed section 6 of the guide i am trying to verify my identity to continue from section 7. the bot runs locally because i don’t yet have a nest account :( It responds to simple command:)
Ships:
I made a slack bot which responds to basic commands. The most challenging part of making this was that i am doing something like this for the first time and the instructions are super hard to follow especially when you don’t know anything related to it. i am most proud of the fact that in the 14 yrs of my existence i finally made something of my own. to test my project please click on the demo URL provided and type /the-bot-help to see all the available commands and what do they do and from there you can execute any of the commands available. thank for checking this project out....
|
1793350393.2858353
|
1793436793.2858353
|
|
16007
|
Maximum Documentation by @featurescript | Stardanc Maximum Documentation by @featurescript | Stardance...
|
featurescript
|
0
|
4.66
|
0
|
[]
|
[{"post_id": 6530, "ts": "2026 [{"post_id": 6530, "ts": "2026-06-10T23:43:28Z", "hours": 4.6603, "text": "This is the new dashboard and form type entries that have many different types of questions targeted for reducing time spent documenting while maintaining maximum information transfer. The screenshots only show the first few questions of the form log, but scrolling down shows more, with unique architecture around each question type as needed."}]...
|
Title: Maximum Documentation by @featurescript | S Title: Maximum Documentation by @featurescript | Stardance
Devlogs:
This is the new dashboard and form type entries that have many different types of questions targeted for reducing time spent documenting while maintaining maximum information transfer. The screenshots only show the first few questions of the form log, but scrolling down shows more, with unique architecture around each question type as needed....
|
1793537259.5929596
|
1794142059.5929596
|
|
54104
|
DREAMSKATER by @pixi | Stardance
|
pixi
|
0
|
36.04
|
0
|
[]
|
[{"post_id": 65307, "ts": "202 [{"post_id": 65307, "ts": "2026-09-10T11:19:42Z", "hours": 8.5856, "text": "Creating a closed shape detector for my game (WIP) I’m working on a game that includes drawing lines and detecting whenever those lines form closed shapes. Right now, I’m in the middle of coding the detector for when a closed shape is drawn. The first system shown relies on a complex system that records all the lines drawn and every intersection made. Because the lines are not split whenever there’s an intersection, it’s very easy for the closed polygon to not form due to errors in the algorithm. Also, this system doesn’t know how to account for when a line is part of multiple closed shapes. Thankfully, I discovered a new data structure that addresses my problem: DOUBLY CONNECTED EDGE LISTS!!!!!1!!!!! I’m not gonna explain how those work here, but it’s what I’m trying to implement in the second system (the last part of the video). Unlike system 1, system 2 will split 2 intersecting lines into 4 separate lines. Getting this system to reliably detect when the mouse intersects a line using Godot’s physics system was difficult, but I managed to get it to work using a raycast2d that follows the mouse. Next steps are: address the stray intersection points generated split the intersected line into 2 lines too, since right now it only splits the line following the mouse actually implementing the DCEL logic (will probably be very hard)"}, {"post_id": 64673, "ts": "2026-09-09T08:17:31Z", "hours": 8.5508, "text": "In this game, I want to check whenever a closed shape is drawn whenever a line intersects another line, so I made 2 test systems for it. test 1: This system relies on an array of points. Whenever a point is next to another point, they’ll connect to each other A line is defined when a lot of points are connected together in a sequence Since this system relies on looping through every point to check if points are adjacent to each other instead of using the built-in collision system, it ended up being very resource intensive. It was also annoying to deal with since it was basically just one very big list of points. test 2: In this system, every stroke drawn is its own object. The system will track each individual stroke and every intersection. intersections are calculated by Godot’s collision system. Whenever the mouse collides with another line, a new intersection is instantiated. Whenever an intersection is made, the system will check if that intersection is part of a complete shape. This is done by checking which strokes the intersection is attached to, and then checking with other intersections those strokes are attached to, repeating until the system finds the sequence looping back in on itself to form a closed shape. Next steps: tracking down the sequence of points in a closed shape to draw its polygon! actually implementing this system into the game lol"}, {"post_id": 63323, "ts": "2026-09-07T02:38:20Z", "hours": 7.1303, "text": "Changes: new level editing system! Instead of just placing objects directly, every object is spawned in with their own spawner node spawner nodes allow for extra flexibility when designing levels! For example, it makes it easier to specify the player’s starting direction without having to modify the player scene itself. As of right now, spawners are made for the player, the hooks, and the walls Those are the only changes that are visible. There is also a some code refactoring underneath: Hooks now use a hook abstract class Added globals and a signal bus to decouple the code"}, {"post_id": 60675, "ts": "2026-09-03T06:07:52Z", "hours": 6.0756, "text": "Changes: Floor markings are now drawn separately when orbiting around multiple hooks Created the magnet hook! That’s the one on the left that’s just a mini icon.svg lol. Unlike the orbit hook, the magnet hook is meant to be pierced through, though right now the player just dies whenever they touch it. Added animations to the orbit hook! Orbit hooks now have their own sprite, and will highlight yellow when they’re close. Hooks now also have a little line between them and the player when the player is close. This line fades in and out. Working on a very simple first level right now! Next steps right now are to make level creation easier by making a level editing system!"}, {"post_id": 55476, "ts": "2026-08-27T10:49:41Z", "hours": 5.7008, "text": "Remaking an old game!! Dreamskater is a game I made for GMTK Jam 2025, and I’m remaking it for a Steam release! It’s a game with an emphasis on limited movement, where you can only use the hooks around you to change direction and move around. Features added Added player and implemented player movement. It looks simple, but the code underneath is a little bit complicated since it accounts for acceleration, changes in direction, and different player states (still vs moving vs hooked) Added the orbit hooks . As the name suggests, you orbit around them! There’s a bit of trigonometry involved in the orbiting logic. added the line markings. Whenever you’re moving while you’re hooked, you will trace a line. The goal in the game is to trace lines until you complete a shape, like a circle. I still need to work on the logic for separating the lines because right now everything is just connected together."}]...
|
Title: DREAMSKATER by @pixi | Stardance
Devlogs:
Title: DREAMSKATER by @pixi | Stardance
Devlogs:
Remaking an old game!! Dreamskater is a game I made for GMTK Jam 2025, and I’m remaking it for a Steam release! It’s a game with an emphasis on limited movement, where you can only use the hooks around you to change direction and move around. Features added Added player and implemented player movement. It looks simple, but the code underneath is a little bit complicated since it accounts for acceleration, changes in direction, and different player states (still vs moving vs hooked) Added the orbit hooks . As the name suggests, you orbit around them! There’s a bit of trigonometry involved in the orbiting logic. added the line markings. Whenever you’re moving while you’re hooked, you will trace a line. The goal in the game is to trace lines until you complete a shape, like a circle. I still need to work on the logic for separating the lines because right now everything is just connected together.
Changes: Floor markings are now drawn separately when orbiting around multiple hooks Created the magnet hook! That’s the one on the left that’s just a mini icon.svg lol. Unlike the orbit hook, the magnet hook is meant to be pierced through, though right now the player just dies whenever they touch it. Added animations to the orbit hook! Orbit hooks now have their own sprite, and will highlight yellow when they’re close. Hooks now also have a little line between them and the player when the player is close. This line fades in and out. Working on a very simple first level right now! Next steps right now are to make level creation easier by making a level editing system!
Changes: new level editing system! Instead of just placing objects directly, every object is spawned in with their own spawner node spawner nodes allow for extra flexibility when designing levels! For example, it makes it easier to specify the player’s starting direction without having to modify the player scene itself. As of right now, spawners are made for the player, the hooks, and the walls Those are the only changes that are visible. There is also a some code refactoring underneath: Hooks now use a hook abstract class Added globals and a signal bus to decouple the code
In this game, I want to check whenever a closed shape is drawn whenever a line intersects another line, so I made 2 test systems for it. test 1: This system relies on an array of points. Whenever a point is next to another point, they’ll connect to each other A line is defined when a lot of points are connected together in a sequence Since this system relies on looping through every point to check if points are adjacent to each other instead of using the built-in collision system, it ended up being very resource intensive. It was also annoying to deal with since it was basically just one very big list of points. test 2: In this system, every stroke drawn is its own object. The system will track each individual stroke and every intersection. intersections are calculated by Godot’s collision system. Whenever the mouse collides with another line, a new intersection is instantiated. Whenever an intersection is made, the system will check if that intersection is part of a complete shape. This is done by checking which strokes the intersection is attached to, and then checking with other intersections those strokes are attached to, repeating until the system finds the sequence looping back in on itself to form a closed shape. Next steps: tracking down the sequence of points in a closed shape to draw its polygon! actually implementing this system into the game lol
Creating a closed shape detector for my game (WIP) I’m working on a game that includes drawing lines and detecting whenever those lines form closed shapes. Right now, I’m in the middle of coding the detector for when a closed shape is drawn. The first system shown relies on a complex system that records all the lines drawn and every intersection made. Because the lines are not split whenever there’s an intersection, it’s very easy for the closed polygon to not form due to errors in the algorithm. Also, this system doesn’t know how to account for when a line is part of multiple closed shapes. Thankfully, I discovered a new data structure that addresses my problem: DOUBLY CONNECTED EDGE LISTS!!!!!1!!!!! I’m not gonna explain how those work here, but it’s what I’m trying to implement in the second system (the last part of the video). Unlike system 1, system 2 will split 2 intersecting lines into 4 separate lines. Getting this system to reliably detect when the mouse intersects a line using Godot’s physics system was difficult, but I managed to get it to work using a raycast2d that follows the mouse. Next steps are: address the stray intersection points generated split the intersected line into 2 lines too, since right now it only splits the line following the mouse actually implementing the DCEL logic (will probably be very hard)...
|
1792936357.459153
|
1793800357.459153
|
|
48002
|
load cell racing pedal set by @PHELIX | Stardance
|
PHELIX
|
0
|
15.07
|
0
|
[]
|
[{"post_id": 65321, "ts": "202 [{"post_id": 65321, "ts": "2026-09-10T12:14:31Z", "hours": 2.0181, "text": "i coded the logic section for pedals, handbrake and shifter"}, {"post_id": 52843, "ts": "2026-08-23T06:16:24Z", "hours": 0.35, "text": "fixed some sizing mistakes and made it more easier to find new size parts than old one(not big diference in sizes)"}, {"post_id": 48742, "ts": "2026-08-17T08:41:17Z", "hours": 12.7069, "text": "almost finished making the 3d model of simracing pedal set tha t you will be able print on 3d printer"}]...
|
Title: load cell racing pedal set by @PHELIX | Sta Title: load cell racing pedal set by @PHELIX | Stardance
Devlogs:
almost finished making the 3d model of simracing pedal set tha t you will be able print on 3d printer
fixed some sizing mistakes and made it more easier to find new size parts than old one(not big diference in sizes)
i coded the logic section for pedals, handbrake and shifter...
|
1793206379.326162
|
1793811179.326162
|
|
59813
|
The Hack Pad by @Mukund_Zolgikar | Stardance
|
Mukund_Zolgikar
|
0
|
2.0
|
0
|
[]
|
[{"post_id": 65328, "ts": "202 [{"post_id": 65328, "ts": "2026-09-10T12:24:05Z", "hours": 0.6878, "text": "Finally 3d model is done"}, {"post_id": 64746, "ts": "2026-09-09T11:55:05Z", "hours": 1.3156, "text": "Finally I am able to make skech and pcb in a hour"}]...
|
Title: The Hack Pad by @Mukund_Zolgikar | Stardanc Title: The Hack Pad by @Mukund_Zolgikar | Stardance
Devlogs:
Finally I am able to make skech and pcb in a hour
Finally 3d model is done...
|
1793029911.2029545
|
1793634711.2029545
|
|
58589
|
Sum of our Parts by @2sen | Stardance
|
2sen
|
0
|
8.63
|
0
|
[]
|
[{"post_id": 65330, "ts": "202 [{"post_id": 65330, "ts": "2026-09-10T12:29:10Z", "hours": 8.6297, "text": "0-01 mostly work on systems so not a lot to show scene manager npc resource textureless bug can now jump and play"}]...
|
Title: Sum of our Parts by @2sen | Stardance
Devl Title: Sum of our Parts by @2sen | Stardance
Devlogs:
0-01 mostly work on systems so not a lot to show scene manager npc resource textureless bug can now jump and play...
|
1792756537.396144
|
1793620537.396144
|
|
58860
|
SereneOS by @AbhrajitGogoi | Stardance
|
AbhrajitGogoi
|
2
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:23:20Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello world!! This is SereneOS. A calming webOS experience made to be felt by heart. This was a really fun and long journey (it also started getting on my nerves towards the end) I could get the doom to run locally but on github pages it seemed like there was some error which still persists. When i was thinking about design I thought that the mac layout looked really clean and modern and was pleasant as compared to other things i tried to take an inspiration from. Although i understand this project looks like mac os this does not mean it was just made in 5 mins by an ai!! There are somethings which i started realising later in the project. As my code and number of files started growing, my directory seemed more and more gibberish and my code started looking ugly too. I need to learn to change that!!! The hardest part was to get the dos to work which stil doesnt work!!! 😭 i have spent 5 hrs trying to fix it and even hackatime does not count it and it doesnt work so it kind of feels like a waste :(", "repo": "https://github.com/Abhrajit-Gogoi/hc-web-OS", "demo": "https://abhrajit-gogoi.github.io/hc-web-OS/"}, {"ship_num": 2, "ts": "2026-09-06T17:52:38Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello World!! I made a calm and graceful looking OS. This OS is meant to feel like home, have a sentimental attractiveness to it. I chose Violet Evergarden because for me watching the anime gave me a sense of belonging as she found herself learning about different people. It has draggable windows with minimise, maximise and close buttons (though you cannot get the app back once you minimise. It is a bug i plan to fix in the next version.). The OS has its button island (i still don’t know what its called) in the bottom with icons that hover when you pass over them. I made a mistake of making the initial commits from my old account and later switched to the new account. Although this might be too simplistic a more niche version is coming in webOS V 2.0!!!!! cant wait to start creating :)) signing off! Version 1.0 is officially finished……….. home wallpaper: https://wallpapercave.com/w/wp6325798", "repo": "https://github.com/Abhrajit-Gogoi/hc-web-OS", "demo": "https://abhrajit-gogoi.github.io/hc-web-OS/"}]...
|
[{"post_id": 65331, "ts": "202 [{"post_id": 65331, "ts": "2026-09-10T12:30:34Z", "hours": 2.1047, "text": "Its up and running!!!!!! I thought this DOOM would be the DOOM of me. Idk about the github page but locally its running!!!! . . THis is Probably the end of the SereneOS journey… it was really a memorable one i would really love!!!!!"}, {"post_id": 65264, "ts": "2026-09-10T08:25:42Z", "hours": 1.17, "text": "added two games via api…. THIS WAS NO DOUBT THE MOST ANNOYING PART OF IT ALL. MANY WEBSITES SAID THEYA LLOW EMBEDS BUT REFUSED TO CONNECT. This was a 10 min feature but i have been going on this since 3 hours out of which only 1 hr has been logged because of the coding part 😭😭😭😭😭😭 I think i’ll give the last spot to doom . i dont think i will be able to make it much more advanced than this because my modularity outright sucks and my files and code are a mess. I think It’ll break me if i try to get any better than this"}, {"post_id": 65201, "ts": "2026-09-10T05:16:56Z", "hours": 3.6489, "text": "New feature!!!! Added a dark theme with a separate wallpaper. Also added A sweet lofi background music that plays on loop to soothe your ears…… The bgm was so sweet I fell asleep listening to it and woke up half an hour later! 😭😭 ….. Now BIG ISSUE (I was warned about this by people already but this is my first time experiencing it) …………Number of files increasing, My code is crossing 300 lines. It takes forever to lookup the element i need to work with and it’s too much work to fix it from square one."}, {"post_id": 64937, "ts": "2026-09-09T17:42:42Z", "hours": 2.5089, "text": "Created a separate notes app and a separate calculator app sandboxed. . I know it looks like a macOS knockoff but that’s what i am trying to make it like. Plus it takes a lot of effort to write a different html and css for each of the apps. I am kind of bad at designing so i tried to make it like apple who have top designers working for them. ….I think i will have to think of some creative features after these. Maybe i can get an api to run Doom inside of this lets seee………"}, {"post_id": 64278, "ts": "2026-09-08T15:39:26Z", "hours": 0.9619, "text": "Fixed some draggability bugs and the full screen option was not giving an actual full screen. Now its ready to ship again"}, {"post_id": 63064, "ts": "2026-09-06T17:33:31Z", "hours": 1.0714, "text": "VERSION 1.0 finished . Added a simple clock app using a sandboxed frame and a different short html file that will run that frame. Currently only 1 app. I will be adding more in webOS 2.0. . . t is really hard to get the JS working for the apps and sometimes it ends up breaking the other part f the js sigh :( . though alls well that ends well! Signing off!! Have a great day ahead"}, {"post_id": 63002, "ts": "2026-09-06T15:54:21Z", "hours": 0.7192, "text": "MAJOR MISTAKE!! I just made a major mistake that could get be reported. All this time I was committing with my old account (gbarial) [it is a great username i came up with myself. I used it to refer to myself from 4 years. Now it’s time to outrgrow it and take on my given name] the personal story aside, It looks like two people made the commit but worry not its just me. So please keep this in mind before reporting my project to be done by someone else….. Back to the devlog….. I made the window draggable and made the minimise maximise buttons work. It looks really cool now!!"}, {"post_id": 62959, "ts": "2026-09-06T14:55:37Z", "hours": 2.0186, "text": "It looks so graceful!!!!!!! Made the welcome message and improved the CSS a whole lot. I don’t believe i made something that looks sooooo smooth. MWAH!! just love it. I foud out that using canve makes it really easy to get the space right. I even made the apps hover. The animation is just <3 I also improved the js script. The next goal is to make the window draggable and get those maximise minimise buttons working!!"}, {"post_id": 62866, "ts": "2026-09-06T12:16:14Z", "hours": 1.2969, "text": "Done with html. added a logo and background css along with loading screen script. added a loading page using event listener in the script and also initialised the clock. up next would be to refine the design and then add the app icon space (idk what its called I don’t use a mac)"}, {"post_id": 62778, "ts": "2026-09-06T09:22:10Z", "hours": 0.4494, "text": "Initial devlog created the basic design of my web os in canva. next i will be working to create the loading page and creating the basic html and css layout"}]...
|
Title: SereneOS by @AbhrajitGogoi | Stardance
Dev Title: SereneOS by @AbhrajitGogoi | Stardance
Devlogs:
Initial devlog created the basic design of my web os in canva. next i will be working to create the loading page and creating the basic html and css layout
Done with html. added a logo and background css along with loading screen script. added a loading page using event listener in the script and also initialised the clock. up next would be to refine the design and then add the app icon space (idk what its called I don’t use a mac)
It looks so graceful!!!!!!! Made the welcome message and improved the CSS a whole lot. I don’t believe i made something that looks sooooo smooth. MWAH!! just love it. I foud out that using canve makes it really easy to get the space right. I even made the apps hover. The animation is just <3 I also improved the js script. The next goal is to make the window draggable and get those maximise minimise buttons working!!
MAJOR MISTAKE!! I just made a major mistake that could get be reported. All this time I was committing with my old account (gbarial) [it is a great username i came up with myself. I used it to refer to myself from 4 years. Now it’s time to outrgrow it and take on my given name] the personal story aside, It looks like two people made the commit but worry not its just me. So please keep this in mind before reporting my project to be done by someone else….. Back to the devlog….. I made the window draggable and made the minimise maximise buttons work. It looks really cool now!!
VERSION 1.0 finished . Added a simple clock app using a sandboxed frame and a different short html file that will run that frame. Currently only 1 app. I will be adding more in webOS 2.0. . . t is really hard to get the JS working for the apps and sometimes it ends up breaking the other part f the js sigh :( . though alls well that ends well! Signing off!! Have a great day ahead
Fixed some draggability bugs and the full screen option was not giving an actual full screen. Now its ready to ship again
Created a separate notes app and a separate calculator app sandboxed. . I know it looks like a macOS knockoff but that’s what i am trying to make it like. Plus it takes a lot of effort to write a different html and css for each of the apps. I am kind of bad at designing so i tried to make it like apple who have top designers working for them. ….I think i will have to think of some creative features after these. Maybe i can get an api to run Doom inside of this lets seee………
New feature!!!! Added a dark theme with a separate wallpaper. Also added A sweet lofi background music that plays on loop to soothe your ears…… The bgm was so sweet I fell asleep listening to it and woke up half an hour later! 😭😭 ….. Now BIG ISSUE (I was warned about this by people already but this is my first time experiencing it) …………Number of files increasing, My code is crossing 300 lines. It takes forever to lookup the element i need to work with and it’s too much work to fix it from square one.
added two games via api…. THIS WAS NO DOUBT THE MOST ANNOYING PART OF IT ALL. MANY WEBSITES SAID THEYA LLOW EMBEDS BUT REFUSED TO CONNECT. This was a 10 min feature but i have been going on this since 3 hours out of which only 1 hr has been logged because of the coding part 😭😭😭😭😭😭 I think i’ll give the last spot to doom . i dont think i will be able to make it much more advanced than this because my modularity outright sucks and my files and code are a mess. I think It’ll break me if i try to get any better than this
Its up and running!!!!!! I thought this DOOM would be the DOOM of me. Idk about the github page but locally its running!!!! . . THis is Probably the end of the SereneOS journey… it was really a memorable one i would really love!!!!!
Ships:
Hello World!! I made a calm and graceful looking OS. This OS is meant to feel like home, have a sentimental attractiveness to it. I chose Violet Evergarden because for me watching the anime gave me a sense of belonging as she found herself learning about different people. It has draggable windows with minimise, maximise and close buttons (though you cannot get the app back once you minimise. It is a bug i plan to fix in the next version.). The OS has its button island (i still don’t know what its called) in the bottom with icons that hover when you pass over them. I made a mistake of making the initial commits from my old account and later switched to the new account. Although this might be too simplistic a more niche version is coming in webOS V 2.0!!!!! cant wait to start creating :)) signing off! Version 1.0 is officially finished……….. home wallpaper: https://wallpapercave.com/w/wp6325798
Hello world!! This is SereneOS. A calming webOS experience made to be felt by heart. This was a really fun and long journey (it also started getting on my nerves towards the end) I could get the doom to run locally but on github pages it seemed like there was some error which still persists. When i was thinking about design I thought that the mac layout looked really clean and modern and was pleasant as compared to other things i tried to take an inspiration from. Although i understand this project looks like mac os this does not mean it was just made in 5 mins by an ai!! There are somethings which i started realising later in the project. As my code and number of files started growing, my directory seemed more and more gibberish and my code started looking ugly too. I need to learn to change that!!! The hardest part was to get the dos to work which stil doesnt work!!! 😭 i have spent 5 hrs trying to fix it and even hackatime does not count it and it doesnt work so it kind of feels like a waste :(...
|
1792878508.0040762
|
1793742508.0040762
|
|
32340
|
My own site! by @purlimurlikas | Stardance
|
purlimurlikas
|
1
|
21.79
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T21:34:58Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal website about myself. It was very challenging to get the CSS right, because it really didn’t want to cooperate with me, and thats also why it took so long. I’m proud that I finally completed it. The website will help you get to know me better.", "repo": "https://github.com/purlimurlikas-maker/purli-s-personal-website", "demo": "https://purlimurlikas-maker.github.io/purli-s-personal-website/"}]...
|
[{"post_id": 65334, "ts": "202 [{"post_id": 65334, "ts": "2026-09-10T12:40:54Z", "hours": 0.7939, "text": "Just made a couple edits to the projects box, and fixed some sizes"}, {"post_id": 47948, "ts": "2026-08-16T06:51:46Z", "hours": 0.7944, "text": "my website really does not want to cooperate with me."}, {"post_id": 47871, "ts": "2026-08-16T03:53:50Z", "hours": 1.7769, "text": "I don’t actually mind these pictures shifting around but I do need to fix some other positions of pictures."}, {"post_id": 46732, "ts": "2026-08-14T06:16:02Z", "hours": 2.4667, "text": "I am trying to make the items shrink and get bigger depending on the window size."}, {"post_id": 37283, "ts": "2026-07-29T21:43:24Z", "hours": 4.4486, "text": "I have even more pictures, and my website will be done soon, but the items move depeding on how big the window is, I’m trying to figure out how to fix it, and if anyone can help, please let me know."}, {"post_id": 34820, "ts": "2026-07-25T20:35:35Z", "hours": 1.2467, "text": "I’m trying to figure out how to add gifs and how to make the navigation bar look more like buttons and not links."}, {"post_id": 34598, "ts": "2026-07-25T13:40:45Z", "hours": 4.1903, "text": "I added CSS, found a good colour palette, and now I have pictures :)."}, {"post_id": 33418, "ts": "2026-07-23T10:44:47Z", "hours": 0.5, "text": "I added more CSS, but I’m having troubles pushing my code to github."}, {"post_id": 33111, "ts": "2026-07-22T18:47:13Z", "hours": 0.6611, "text": "Fixed some mistakes and now I am trying to get the colour palette to look better and change some other things."}, {"post_id": 32954, "ts": "2026-07-22T13:17:57Z", "hours": 0.5275, "text": "Uhm, there are some things wrong in my code, but at least I am taking steps forward."}, {"post_id": 32911, "ts": "2026-07-22T11:43:02Z", "hours": 1.7839, "text": "I am adding more text to my website."}, {"post_id": 24842, "ts": "2026-07-08T17:48:00Z", "hours": 2.2178, "text": "I am working on the layout and information on my website, tried using AI to fix the layout, because all the text was on top of eachother, but AI messed everything up."}]...
|
Title: My own site! by @purlimurlikas | Stardance
Title: My own site! by @purlimurlikas | Stardance
Devlogs:
I am working on the layout and information on my website, tried using AI to fix the layout, because all the text was on top of eachother, but AI messed everything up.
I am adding more text to my website.
Uhm, there are some things wrong in my code, but at least I am taking steps forward.
Fixed some mistakes and now I am trying to get the colour palette to look better and change some other things.
I added more CSS, but I’m having troubles pushing my code to github.
I added CSS, found a good colour palette, and now I have pictures :).
I’m trying to figure out how to add gifs and how to make the navigation bar look more like buttons and not links.
I have even more pictures, and my website will be done soon, but the items move depeding on how big the window is, I’m trying to figure out how to fix it, and if anyone can help, please let me know.
I am trying to make the items shrink and get bigger depending on the window size.
I don’t actually mind these pictures shifting around but I do need to fix some other positions of pictures.
my website really does not want to cooperate with me.
Just made a couple edits to the projects box, and fixed some sizes
Ships:
I made a personal website about myself. It was very challenging to get the CSS right, because it really didn’t want to cooperate with me, and thats also why it took so long. I’m proud that I finally completed it. The website will help you get to know me better....
|
1793317927.2203395
|
1793404327.2203395
|
|
60607
|
GETUP! by @Newbieee | Stardance
|
Newbieee
|
0
|
0.96
|
0
|
[]
|
[{"post_id": 65341, "ts": "202 [{"post_id": 65341, "ts": "2026-09-10T12:51:30Z", "hours": 0.9603, "text": "Hey guys, I started making the alarm clock. I’ve got a little trouble of not finding the 3d model of the keys, I would really appreciate any advice given"}]...
|
Title: GETUP! by @Newbieee | Stardance
Devlogs:
H Title: GETUP! by @Newbieee | Stardance
Devlogs:
Hey guys, I started making the alarm clock. I’ve got a little trouble of not finding the 3d model of the keys, I would really appreciate any advice given...
|
1793036904.6561317
|
1793641704.6561317
|
|
60625
|
Mercuryx by @Doruk_Cevik | Stardance
|
Doruk_Cevik
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:18:32Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made a discord bot. Its name is Mercuryx. To be honest the most challenging part of the project was to learning how to do it. And i want people to firstly reset the token and then apply it on the bot.run(“TOKEN”) code", "repo": "https://github.com/DorukCevik95/Mercuryx", "demo": "https://discord.com/oauth2/authorize?client_id=1547325662346346576"}]...
|
[{"post_id": 65345, "ts": "202 [{"post_id": 65345, "ts": "2026-09-10T13:04:20Z", "hours": 0.4003, "text": "Devlog 1: I just started to build my discord bot. İ added a logo and added some commands such as $hello and $bye and the bot can also read the messages that other users wrote! Anyways the discord bot is still in progress so i will keep posting devlogs. See ya!"}]...
|
Title: Mercuryx by @Doruk_Cevik | Stardance
Devlo Title: Mercuryx by @Doruk_Cevik | Stardance
Devlogs:
Devlog 1: I just started to build my discord bot. İ added a logo and added some commands such as $hello and $bye and the bot can also read the messages that other users wrote! Anyways the discord bot is still in progress so i will keep posting devlogs. See ya!
Ships:
made a discord bot. Its name is Mercuryx. To be honest the most challenging part of the project was to learning how to do it. And i want people to firstly reset the token and then apply it on the bot.run(“TOKEN”) code...
|
1793411688.6381457
|
1793498088.6381457
|
|
14070
|
Timetable by @omeriadon | Stardance
|
omeriadon
|
2
|
371.91
|
2591
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T09:11:11Z", "hours": 233.0, "multiplier": 18.49, "payout": 2143, "blessing": "neutral", "text": "This ship, I completely remade the app to work around accounts, and all the features that come with that I added a server, because it used to just store your timetable in your local storage and that was quite boring honestly creating a server for this has allowed me to add accounts, notifications, live activities, friends, shared events, multiple devices in the same account, and has made the website much easier to make (still in development, thats why the top devlogs are talking about the website not the app) The app now has all of this: Grades, track the score of all of your subjects notifications for each subject you have and your events etc live activity throughout each school day telling you your subjects etc sharing your location, subjects, and more with friends widgets that show your your subjects, upcoming events, and your friends’ schedules lots of administration options to manage pretty much everything, including who else is admin lol full support for siri, shortcuts, spotlight, and apple intelligence a full apple watch app btw i know 350 hours on a timetable app sounds insane (😭) but its because this project has 4 different aspects: swiftui client for iPhone, iPad, and mac swiftui client for apple watch a website client (still in development) the server that handles everything, and the database i promise it does more than just tell you your subjects 🙏", "repo": "https://github.com/omeriadon/Timetable", "demo": "https://testflight.apple.com/join/DDUXPSq3"}, {"ship_num": 2, "ts": "2026-07-15T13:35:31Z", "hours": 94.0, "multiplier": 9.5, "payout": 448, "blessing": "neutral", "text": "So I made a timetable app for my school, super-specialised and for ios, watchos, and macos. its got live activities and notifications to show you current and next subjects throughout the school day, widgets for your weekly schedule, ability to see your friends’ timetables, and server sync. and apple intelligence support!", "repo": "https://github.com/omeriadon/Timetable", "demo": "https://testflight.apple.com/join/DDUXPSq3"}]...
|
[{"post_id": 65346, "ts": "202 [{"post_id": 65346, "ts": "2026-09-10T13:08:58Z", "hours": 8.2983, "text": "Continuing the assorted improvements to the app: Fixed stacked drawers so nested drawer state updates reactively. Reworked the Friends page into shared List, ListSection, ListRow, and Card components. Preserved friend drag-and-drop ordering within the new layout. Improved timetable UX: i fixed the lesson selection in week view correctly aligned the “now” indicator in today view restricted timetable mode navigation to mobile through CSS, cos desktop already has the sidebar improved planner event styling. made the drawer compenent animate in and out, something i lost from the react -> solid migration I also added a reusable event-tag selection row with symbols and selected-state feedback."}, {"post_id": 62745, "ts": "2026-09-06T08:06:14Z", "hours": 5.9261, "text": "As well as migrating to Tanstack, I wanted even more speed, just for fun at this point honestly, so I decided to move to SolidJS from React. Its decently faster while looking similar to react, and it has some syntax stuff that i much prefer over react. this is basically just adding some margin for me to make bad code The end product looks identical so theres not much to show.. apart from the migration, I’ve also been designing the new landing page, which will also use the 3d model thing. the big question is figuring out how to make the 3d markers for each classroom register correctly, because i need to show a pin for each user at the right place, from swiftui, and somehow embed it into a realitykit 3d model. but im sure this use case has been done many times before so i can find something online!"}, {"post_id": 60821, "ts": "2026-09-03T13:24:26Z", "hours": 7.5314, "text": "Im making a 3d model of the school. this is so that i can show a whole literal map of the campus in the app, and then you can see where each user is, in 3d! i could even reexport it for the website, potentially its going to be interactive and everything"}, {"post_id": 59542, "ts": "2026-09-01T12:52:51Z", "hours": 1.2314, "text": "ok so i think i have optimised it as much as i can lol tanstack clearly was a good idea, it just needed some optimisations!"}, {"post_id": 59501, "ts": "2026-09-01T11:30:41Z", "hours": 8.1464, "text": "I did a few things in this devlog, got quite carried away frankly. So I migrated the codebase from Next.js to Tanstack. The reason was that i was seeing a lot of speed concerns, especially on the landing page. it was just lagging so much. i tried it on all my devices on all the browsers and it was there half the time. after a lot of commenting things out i just couldnt find a bug, so now i moved to tanstack. hopefully taht will remove at least some problems. in any case, i got bored of next.js and tanstack is a different framework to play with and make use of!! also, i continued the landing page by adding cards for each item. i don’t really like it right now, but i have established that i need to add these cards, if not in a different UI. The titles of each card are just image-masks, of Apple wallpapers! i went through some archive and picked out the ones i like, and applied a brightness 200% filter, and they look really nice now. after i finish the landing page im gonna work on rehauling the rest of the ui to be more intuitive and actually usable"}, {"post_id": 57354, "ts": "2026-08-29T14:02:16Z", "hours": 2.4136, "text": "I really wanted the first screen for timetable to look really really interesting and unique and instantly recognisable as Timetable, so i made the text instead of a boring white, it now has 3 really nice effects applied: A grain overlay, or noise, which in this case doesn’t make it look paper but looks nice nonetheless Its not flat white, its white at the top and goes to brown at the bottom, more noticeable when you close up. subtle but also nice The “white” isn’t even white. Its a particular white image i had a lot of difficulty in obtaining. it is the third screenshot, the “white” png. Its an .avif , and it uses some HDR-capable color space format something, which on compatible browsers make the timetable text show considerably brighter than everywhere else on your screen, which makes it really pop! i plan on using this effect in other places as well across the landing page to make it just pop a bit more. (the 4th image shows the white pixel showing as 1.25. anything above 1 is hdr.)"}, {"post_id": 57217, "ts": "2026-08-29T10:04:27Z", "hours": 1.4844, "text": "I added a title to the lading site, but as you can see its not just any title. it uses this package called fitty to make the text size up to the full width of the page, and it does indeed look massive. and it also goes under the rectangles of the logo, so its like an apple depth effect you get on iphone lockscreens i found the website really laggy while scrolling somewhere while finishing of the main interactive icon, and i couldnt figure out why after removing everything that could have been gpu intensive (my gpu was spiking to 80% while just scrolling) so after all that my most likely theory is that the lag is just my computer and not the website (or both 😭😭) also when i made that main art, i made the border radii use px units, which made it look quite deformed on smaller screens, since the rectangle’s size is relative to screen width, whereas border radius is constant… so i went and fixed that too"}, {"post_id": 56944, "ts": "2026-08-28T23:37:12Z", "hours": 1.0728, "text": "After much trying to make glass, yet again, i failed. So now im just using blur and these edge effects, and i think it looks nice! theres even a hover eect, as shown in the second screenshot (class details show and the rectangle rotates a bit randomly)"}, {"post_id": 56543, "ts": "2026-08-28T10:38:02Z", "hours": 8.8014, "text": "I started to make the landing page, and i decided, after very much research from other landing sites I’ve seen, that the main item should be an interactive timetable, a version of the app icon. but interactive and glassy. im trying to recreate everything in css but its not looking as smooth and polished as real liquid glass does so ye. im kinda getting close though! I also added a navbar item that just is the link to actually open timetable, and when you hover it shows options to either open the app in testflight or open the web version which just redirects to /login. and its background switches to black when you start scrolling, which will make more sense later. i haven’t really planned the rest of the landing page, and i might remove this entire component if i find a good liquid glass implementation i can use, especially with bouncy animations etc. but yeah. (worst part is i might even just go change the entire app icon in a week so that kinda wastes all this time 😭😭😭)"}, {"post_id": 53528, "ts": "2026-08-24T03:23:23Z", "hours": 5.4669, "text": "I have started using the shared components around the website, and its actually looking pretty nice! most importantly, these components can be changed once and work everywhere and i removed the drawers i was using everywhere, and i also made said drawers wider while i was rehauling the drawers i also kinda broke their animations and i don’t know how to fix it 😭 the whole website looks really basic now, since its obviously using now the shard unstyled components, and i was thinking about the theme and decided maybe it should be unstyled, and only the user’s own events and content etc can have colours."}, {"post_id": 52138, "ts": "2026-08-22T07:15:18Z", "hours": 9.6475, "text": "I think I have finished making all of the shared components I put everything inside accordions to organise the test components Overlays get the same translucency and outline every other component gets I think im happy with how the lists look, finally the option selectors are really really hot!!! The first page I have remade is the About view, which shows this badge if you are on localhost lol i also had to move the contributors up to the server instead of hardcoding them so that both website and app can see it And a really nice little animated gradient thingy for the about view!!"}, {"post_id": 51517, "ts": "2026-08-21T08:53:31Z", "hours": 3.9036, "text": "I have pretty much finished the components, I’m going to now go and add the other shared components and improve them too. then im gonna go through the css files and clear anything that is unused or overcomplicated, and then i can start remaking the website!"}, {"post_id": 51022, "ts": "2026-08-20T14:43:48Z", "hours": 7.9519, "text": "So the previous UI was really ugly, to be honest, so i decided I am oing to scrap half of the design and completely unstyle the entire app while making everything as standardised as possible, by trying to only use reused components as much as possible. So I spent all today stripping out components I didn’t need, then take the surviving components and adjusting them to my use case and making then look as nice as I can. alert dialogs drawers buttons lists section cards switches I have also decided to stop using tailwind because its quite simply messy and much more confusing than just moduled css, so ye"}, {"post_id": 50337, "ts": "2026-08-19T14:34:49Z", "hours": 5.8117, "text": "I’m still working on making the UI look much better, and I’m still figuring out some website stuff like how i should wire up the sidebar tabs as well as having like a nice homepage to advertise everything the app does, which will be a really fun sub-project. Turns out making nice looking lists in react is much harder than it looks, as shown below 😭 one problem is that each symbol has a different aspect ratio so i dont even know how to fit them nicely And unlike swiftui, its raelly raelly hard to stay consistent in your css and to keep using the ui tokens instead of making custom css everywhere. it looks like the website is gonna be harder than the app to make after all 😔 this classes card though, for example, i think its pretty much almost done. i might need a few more borders to make it look glassy and stuff but it looks exactly like the ios version, which is the end goal! And I added the animations to the classes card, again exactly like the iphone app. i also got a vscode extension that shows you all of your unused css classes, i highly recommend getting one and purging your codebase!"}, {"post_id": 50037, "ts": "2026-08-19T02:03:20Z", "hours": 11.0747, "text": "So I’ve made the first version of the website, it’s really insanely buggy and broken, but the ui is there. so have the html good but no i need to really tweak the css to make it look nice, apple-style. i also need to figure out how to make loading states look nice, since unlike the the swiftui app, i can’t cache anything to not show loading state. in the plus side i dont have to deal with offline state, though. the sidebar and the toolbar are finished, and look really nice. the sidebar has an effect (from ipados) that basically reflects the content in a subtle blurred way, to make it feel like glass while not actually rendering anything expensive. The toolbar is just glass buttons + a black fade effect + progressives blur, also tuned to look like ipados. the icon in the sidebar is pretty ugly honestly so i need to replace that with the non-bordered icon. The other problem i am dealing with is that we are planning a complete redesign of the entire swiftui app, and obviously that has to propagate to the website, so any work i do now is kinda gonna be half wasted, depending on what the redesign actually looks like."}, {"post_id": 47872, "ts": "2026-08-16T03:56:44Z", "hours": 0.5908, "text": "And now it scales up and down and stuff!!! I still can’t believe this is just html and css and js 😭 Theres so many parameters to tweak to make it feel right, its so finicky And depending on the size of the glass, you have to change the numbers, its kinda confusing honestly"}, {"post_id": 47804, "ts": "2026-08-16T00:37:23Z", "hours": 0.8556, "text": "Its nice and squishy now! It uses gsap for this as well gsap is a great framework ngl"}, {"post_id": 47523, "ts": "2026-08-15T14:19:10Z", "hours": 4.8103, "text": "Hehehehe I’ve got a working version of liquid glass It uses gsap, which is nice the second image is an earlier version 😭"}, {"post_id": 47363, "ts": "2026-08-15T08:10:22Z", "hours": 1.1444, "text": "The website is alive! I got a screenshot of an iOS26 sidebar, and i am copying it, as you can see. looks nice i think"}, {"post_id": 47332, "ts": "2026-08-15T06:41:25Z", "hours": 2.6325, "text": "Ok so after a bunch of wrestling with nginx and bun and next.js, i have added the website! its at https://timetable.adonis.pt/ and the current api has been moved to https://timetable.adonis.pt/api Its the usual next.js thing. and it uses bun. my design idea for this is to look like its an ipad app, essentially, and im going to see exactly how far i can take the mimicking, maybe i can even add liquid glass to the web 💀 So yeah no more app building, now its website! It’s gonna be so much easier as well because I aleady have the backend done and tested, so this should be all design which will be really fun."}, {"post_id": 46919, "ts": "2026-08-14T13:55:04Z", "hours": 0.3047, "text": "new icons. the old one that now supports light mode was kinda ugly."}, {"post_id": 46909, "ts": "2026-08-14T13:32:29Z", "hours": 7.6422, "text": "A somewhat interesting devlog this time. I spend a good 2 hours just trying to make live activities work. the miserable part is that they were already working before 😭 I dont even know what I did but it broke. And while i was trying to make a debug button to start a live activity, yeah it just wasn’t working. all kinds of problems with not submitting a good APNs token. and i had to like stop activities before starting new ones and stuff it was just in general really annoying. there was even more problems but its too much to say here 😔 anyway, i have started cleaning up the app. no more big features, to be honest, until i add a website for this thing!! should be really easy since the backend is clearly all done lol events can show weather for them, such as the athletics carnival i removed the ridiculous backgrounds i allowed users to choose, theres no only solid black/white and paper. more reasonable, i think. as part of my optimisation, i removed settings i found useless. haptics are now always on, and highlighting the current day is always on. profile pictures can now have their foreground colour set, like the Monogram can have its colour optimised.you can see the average for when your friends arrive to school per day, instead of in total. developer settings also got reorganised, more settings only show to developers. yet again cleaning up the app experience. the location status was a bit unreliable, if users were offline, etc, so i added multiple ways the app pushes updates to the server, and queued statuses when the device was offline. i also refined the actual radius for what counts as within 5 / 10 minutes, should be a bit better. i havent thought about people who live within 10 minutes, thats an interesting case the subject editors grid also looks nicer (still needs more improvement though the tabview now hides while scrolling, like it collapses into the corner, like apple apps! you can manually turn off sharing your status, for privacy reasons. and some more things i forgot 🥹 im so excited for this thing to actually launch!!!!!"}, {"post_id": 46297, "ts": "2026-08-13T13:01:18Z", "hours": 1.3272, "text": "I spent some time to work on this search button and its animation. idk if the video plays, but it uses apples glass effect transitions! I also made the confirmation dialogs for removing and reporting a friend better, before they just popped up in the middle of the screen, now it comes out of the menu (also found another ios27 beta bug 😐)"}, {"post_id": 46263, "ts": "2026-08-13T11:41:36Z", "hours": 2.4739, "text": "So supporting light mode calls for an icon redesign, at least just for light mode, and here they are! Though to be honest, the entire app is gonna need a redesign, because I need to rename it from Timetable, because it has expanded into doing so much more, and timetable is a bit of a boring name. finding names is so insanely annoying though, but oh well."}, {"post_id": 45744, "ts": "2026-08-12T13:04:58Z", "hours": 2.6161, "text": "I added custom backgrounds! Theres the paper backgrounds i added recently, and then the solid colours, and then also some of the really nice apple ones idk what they are called (i hope apple doesnt copyright me 😭) so yeah it applies to all backgrounds in the app i think it merges really nice with the liquid glass and blur backgrounds different views have it also shows on watch i also added an option to choose how far forward you see events. theres also even more statistics for what app version people are using!"}, {"post_id": 45684, "ts": "2026-08-12T10:26:42Z", "hours": 1.3586, "text": "You can now edit the foreground colours for your profile picture monogram i also completed light mode support for widgets"}, {"post_id": 45645, "ts": "2026-08-12T08:44:01Z", "hours": 2.0167, "text": "I added accessibility improvements, mainly like labels and tags and stuff, for use with voice over etc. this was triggered by me installing a developer process into my app which allowed me to iterate on design faster, and it depended on accessibility elements to discover each element. (the purple thing lets you tap elements and comment on them) i also tried a new background for the cards, as you can see below, its just glass and i think it looks pretty nice"}, {"post_id": 45165, "ts": "2026-08-11T14:09:40Z", "hours": 9.5667, "text": "Big update! Light mode! The app used to be dark mode only, it let me make it look much more pixel-perfect and refine colours and stuff, but its kinda obvious you cant keep the app dark mode only, its just not good. so i went through everything, adding light mode versions of paper, text, glass, etc. took me quite a bit of time because i was trying to maintain consistency while doing it, which included alot of redoing things and creating view modifiers and manually applying each one, etc i also added weatherkit, its just a single line in the today tab, but its nice. while adding light mode support, i found a really nice blur view i could add to lists, so now each lists’s background is nothing other than a blur! i also decided to make all backgrounds made out of paper, and i think it looks nice? theres also now a statistics page for deices and os versions and builds and stuff, itll be more useful later. as well as knowing when your friends arrive to school, i added the ability to know when they are within 5 or 10 mins, and to send notifications for that. average arrival also is split by day now, because people arrive to school at different times per day theres a new tab picker, which you can see int eh controls, its much more glassy than the last one, which is really really playful and stuff! i still have more work to do in terms of ui work, excluding light mode refinements, like notifications and widgets, but yeah."}, {"post_id": 43989, "ts": "2026-08-09T14:04:31Z", "hours": 1.73, "text": "I added a new devices statistics view. or more accurately, i expanded it. before, it just shows device platforms. now, it shows the os version, minor os version, and if it is a beta or not. i also added support for iOS 26 (previous builds only supported OS27 or later). this involved me just making some features not work on os26 😐 and supporting anything before OS26 would probably be legitimately impossible, so yeah not that."}, {"post_id": 43936, "ts": "2026-08-09T11:55:31Z", "hours": 1.5656, "text": "I also made some improvements to the card height for the user’s own item. before, it was just the full width. Halfway while I was working on that, my TabView suddenly froze for a straight 20 seconds every time i changed the tab. this was very weird, and the CPU shows 0% usage, so I was quite surprised. After a large round of commenting things out and seeing what broke, I found it was a single .glassEffect() that I was using for the progress marker. I have no idea how a glass effect can make an entire tabview freeze, but fine. i replaced it with a simple red colour, as shown below, with a stroke and shadow, and i think it looks fine now."}, {"post_id": 43850, "ts": "2026-08-09T08:59:50Z", "hours": 1.6619, "text": "there is a new progress background: its not a background! inspired by the app icon / ios app, the progress view is now this marker thingy which fits into the app’s theme much nicer I’ve also been tweaking the font sizing, image sizing, padding, and gaps between the items here to make sure they look good at all possible subejct names etc. i also had to fight a bit with the safe area of the view, you can see in the image below the name “bob” ends slightly above the text, took me a lot longer than expected to fix that"}, {"post_id": 43782, "ts": "2026-08-09T06:43:26Z", "hours": 7.4142, "text": "I started work on rehauling the watchOS app And I really like how it’s coming out The watch is supposed to distill down the information the user needs, so i picked the current and next period, time, and their location. all these elements are glassy and stuff, so they are clickable, and its in a tabview that scrolls between each card. The first tab is the week view for the user. so I spent a good 2 hours trying to make a ScrollView work, but it didnt. sometimes the views teleported, some lagged, some glitched, and it was overall insanely annoying. so I moved to a tabview, which was considerably more stable, but removed the animations I wanted. it had its own animations which were fine, but yeah. Also, fonts also reflect on the watch! the one in the screenshots below is the expanded style, which to be honest isnt that good on watch since the watch is constrained as is, but yeah. The glass timetable actually looks insane I am still thinking of how to include other content, like grades maybe, and other things, but i dont want to make it too dense and slow"}, {"post_id": 43264, "ts": "2026-08-08T12:54:21Z", "hours": 3.6083, "text": "You can now change the font! this took more work than you would expect, because i did a find on the project and saw there were like 60 references to .monospaced, and each one had to be manually upgraded to dynamically apply font. i also tried to make the rounded font expanded, but after some inspection i found it doesnt even have a .expanded variant 😐 so the options i ended up with were monospaced, rounded, and expanded. no normal font. it just looks boring at this point. below is the same screen with each option! widgets also get the fonts, and they look actually insane ngl"}, {"post_id": 43093, "ts": "2026-08-08T05:35:22Z", "hours": 2.4481, "text": "improving the friend detail view the padding is so much nicer, and the detail view also shows more info and in a better way the week subtab shows a similar timetable to the user’s own, and shows more info. and some more statistics lol"}, {"post_id": 42989, "ts": "2026-08-08T00:22:14Z", "hours": 1.9642, "text": "I decided to remove created timetables. they just don’t work anymore with the Friends concept, which makes it really annoying to adjacently share other timetables alongside having friends. its a shame, i wish it could have worked, maybe ill add it again later. oh well. im still just combing through the app and fixing all the little things i see: grade tracker gets a next item in the top for the top 4 subjects, which is important for atar. improved the friend detail view a bit better, because the old one had not enough information and was displaying badly.added more statistics to administration view cos its fun lol the tag selector view was improved, looks nicer and is a tiny bit more legible nowi changed the grade tracker weighting from semester to year. apparently thats the norm more friend detail view improvements"}, {"post_id": 42669, "ts": "2026-08-07T14:52:24Z", "hours": 2.3131, "text": "Grade tracker!!! I know this is a very cliche topic but I had to implement this because it integrates so seamlessly with the app for example, it already knows your subjects (duh) and when you input the date of your assessment, it also knows which period of the day that is, because it knows your subjects! (duh) I also added ATAR, sthe user can set goals and stuff for what they want to achieve."}, {"post_id": 42589, "ts": "2026-08-07T12:33:01Z", "hours": 1.0975, "text": "some ui improvements (that weird box in the account view is Metal debug overlay, not my app)"}, {"post_id": 42549, "ts": "2026-08-07T11:27:09Z", "hours": 5.165, "text": "lots of little things instead of one big feature: i used to send emails, and i reached limits on the email provider so i had to move to only sending notifications, like device notifications. i still need an alternative, im looking through options now there used to be different settings view between iPhone and iPad, so i consolidated them into one view.you can now see your friend’s status as on or off campus. this uses location to check when you reach school or leave. this also allows some cool statistics like average school arrival time!there is better moderation, it shows in the admins view and lets the admin block or do nothing about the account. it will be expanded later to have more features and actions and stuff you can request to change your friends-since tag, also approved by admin.i deleted all (most) references to #if os(macOS) , since there is no more macOS build, its just iPad running on mac. small ui improvements: added search to some more administration views tapping an existing photo pro allows crop the tabview gets tab transitions, like the ones iOS 26 had (that ios27 removed 😡)year-level tags are separated from other tags expanded statistics!added archived events - events in the past - plus an option to automatically delete old events added a button to reset tips, since the app is getting more and more complicated the onboarding is less condensed, when that permission is first needed, its permission sheet request shows.more stuff gets cached in Defaults, making it more offline-safe.and some toolbar and blur and navigation title stuff."}, {"post_id": 41948, "ts": "2026-08-06T14:06:53Z", "hours": 1.2208, "text": "user account data now has highlighted rows for faster navigation user reports look much better, as well as friends-since requests reporting or sending feedback sends notifications instead of emails, now"}, {"post_id": 41911, "ts": "2026-08-06T12:53:26Z", "hours": 4.0961, "text": "Few things! Adminsitration gets new items for reported users and freinds-since requests sections in adminstration statistics for number of users, etc you can now see your status and other people’s status, like on or off campus new page that asks for location access ofc (ill move it into the onboarding later improved the add a friend sheet admins get emails for reported users, etc"}, {"post_id": 41764, "ts": "2026-08-06T04:50:27Z", "hours": 8.5058, "text": "I finished the refactoring for now, to make the app multi platform. So then i did some more brainstorming and I have consolidated what is the next few features I need to do tips, to tell the user about features the app has they sound easy but each tip needs rules and parameters and all kinds of obscure annoying things, so its going to be harder than it looks my first tip shown below An indicator next to each friend about their status, which is going to take the user’s location, taken in the background, to tell if they are on campus or off campus So from this you can tell when a user arrives at school or if they are sick iOS provides a function that will call my app, from the background, every time the user crosses a specific map polygon (The school). so i dont even need to do any map processing, my app just gets called every time the device goes in or out of school! plus i can add cool related features like the user’s average arrival time to school, which will be pretty cool!"}, {"post_id": 40724, "ts": "2026-08-04T13:16:45Z", "hours": 3.6128, "text": "Still just refactoring and remaking the app. i decided to remove OS 26 compatibility, because there is just too many APIs and stuff the images below are some stuff I’ve been refining: dragging friends around sideays iphone support (same thing as macOS + iPadOS) but I’ve decided now to not work on macOS (which is just iPadOS) and ipad until i perfect iphone and watch. should be fun!"}, {"post_id": 40093, "ts": "2026-08-03T14:09:54Z", "hours": 0.6797, "text": "its getting there! mac catalyst is definitely better than trying to make native macOS work. swiftui isnt really making it any better, its really really restrictive in terms of how i can structure my app. like for example that right column, has so many glitches that i cant really find solutions to because the bugs aren’t in my code, its infuriating."}, {"post_id": 40069, "ts": "2026-08-03T13:17:55Z", "hours": 1.1419, "text": "working with macOS is infuriating me, so i decided im going to make the macos app actually be mac catalyst, so its technically just running an ipad app. which makes sense. still needs alot more work, this refactor is proving very very annoying"}, {"post_id": 40036, "ts": "2026-08-03T11:53:01Z", "hours": 1.3019, "text": "first version of timetable for macos 😭 its really ugly and lwk broken. so im gonna spend the next few hours fixing this incredibly “interesting” UI."}, {"post_id": 39979, "ts": "2026-08-03T10:13:36Z", "hours": 3.41, "text": "So so far up to now, I have completely neglected everything other than iPhone. i needed this so that i could focus on making iphone as seamless and intuitive and possible, and to push features faster. so now i have to go and basically remove all of the non-iPhone code and replace it with iphone code, and then try to make that work multiplatform. so i decided iphone is going to remain as a tabview, for now at least, but ipados, macos, and big iphones can use a navigation split view, shown below. so a sidebar and main view and an inspector on the right sometimes."}, {"post_id": 39467, "ts": "2026-08-02T13:08:27Z", "hours": 0.6319, "text": "I checked the localisation and it went down to 25%, so I went and pushed that back up to 100%. and the friend detail view has been improved a bit more"}, {"post_id": 39451, "ts": "2026-08-02T12:29:09Z", "hours": 0.3811, "text": "before and after some small ui improvements!!"}, {"post_id": 39440, "ts": "2026-08-02T12:06:26Z", "hours": 0.6767, "text": "i just read an article that said @Environment(\\.dismiss) is bad for performance dismiss() is a very simple and fast way to make a sheet or other modal view dismiss , but because its so simple and dynamic, that introduces lots of bugs apparently. so I had to go through all the sheets and this time replace dismiss() with better state management. i hope ill notice the performance improvements!"}, {"post_id": 39417, "ts": "2026-08-02T11:25:42Z", "hours": 1.5344, "text": "some people were saying that it was really annoying that you could drag anywhere in a sheet to dismiss the sheet, you would be halfway through something and then you have to restart. so i went through all the sheets in the app and checked if they needed to remove this swiping. luckily it only needed one modifier per sheet. also, more tester feedback was that i shouldnt have sections for tags, so yeah i did that. also, now that there is a concept known as friends, instead of just shared timetables, i removed the option to allow people to have their timetables searched publicly. i havent figured out what i want for specific created timetables, i might lwk have to just remove that also users now have to fill in what year group they are when onboarding. for tags."}, {"post_id": 39252, "ts": "2026-08-02T03:22:29Z", "hours": 3.0194, "text": "friends detail view shows a bit more content, and is redesigned for more paper you can reorder the badges around now for priority when they show in their overlay event tags editor looks a bit nicer plus, users can edit their year group after signing in."}, {"post_id": 38922, "ts": "2026-08-01T14:51:06Z", "hours": 2.6803, "text": "So the header in settings now reflects with your pfp colours for the profile editor, i made it now scrolling so that you could fit in all of the various options, like animation speed and noise and stuff. when you click on a class in today view, it shows some more details about the class like teacher and location. friends view also looks a bit nicer, both the list view and the detail view."}, {"post_id": 38829, "ts": "2026-08-01T12:04:02Z", "hours": 1.9464, "text": "Given the theme of this app, paper, widgets now get paper too! settings for profiles has been updated too you can now select black → white in the colour selector. friend detail view still kinda looks a bit empty and bland, im not quite sure how to make it feel alive"}, {"post_id": 38704, "ts": "2026-08-01T07:32:35Z", "hours": 4.1875, "text": "you can add special badges to people now, for like early birds or something idk. the profile picutre bakground has been upgraded a bit, but im going to have to fork the repo and adjust it myself, its currently not looking like a gradient but a single noisy colour, im gonna fix that."}, {"post_id": 38184, "ts": "2026-07-31T13:32:47Z", "hours": 0.5325, "text": "The bottom colour grid is concentric to the device!!! although making the white outlines also behave nicely is proving really really hard, as you can see below"}, {"post_id": 38170, "ts": "2026-07-31T13:00:49Z", "hours": 3.5731, "text": "I’ve been busy remaking the profile editor, its coming together really nicely. that profile picture at the top is designed so that lets the other components take up their space, and then the pfp takes up the rest of the space. this allows the same view to not scroll while working on different phones and text sizes etc. and the background is animated!!!"}, {"post_id": 37968, "ts": "2026-07-31T01:17:27Z", "hours": 5.3656, "text": "I made this widget, which is kinda like a summary widget for the user. it requires this large widget size to fit everything, and its goign to be more dynamic than the other widget which always show the same layout. i haven’t thought exactly how i’m going to do it though, below is a rough first version."}, {"post_id": 37025, "ts": "2026-07-29T14:32:52Z", "hours": 1.9747, "text": "i added a section in teh administration to be able to turn off the server for everyone except for me, so that i can maintain the server and test it. and also a section to manage other admins."}, {"post_id": 36962, "ts": "2026-07-29T11:55:40Z", "hours": 7.3492, "text": "so me and my friend did some more brainstorming focussing on the new friends tab, and how friend accounts work, and profiles and pfps etc. we also aggregated a list of bugs and UI glitches in the app that still need fixing. the current first version is (moderately) broken 😭"}, {"post_id": 35775, "ts": "2026-07-27T12:45:52Z", "hours": 1.9714, "text": "Me and my friend did a bit of brainstorming, to get ideas on how to improve the app UI, UX and future features. cos we are planning a future release hopefully. so we gained a good idea of consolidating friends into a more clear friends tab, combingin the currently spread-around-everywhere friends stuff."}, {"post_id": 35475, "ts": "2026-07-26T22:47:13Z", "hours": 2.4061, "text": "I made some UX adjsutments in the settings app, added some images, reordered haptics, etc the planner sub-tab has been rehauled, and shows items chronologically instead of in sections, which i thought was more intuitive. it still needs much more thought though, im not sure how to space them out since some gaps are months long."}, {"post_id": 35175, "ts": "2026-07-26T13:01:49Z", "hours": 2.2025, "text": "Theres now brown and white paper combined. its an interesting ui concept, makes no sense in real life, but i think it looks nonetheless! it definitely creates an app theme, regardless of if this theme looks good or not…"}, {"post_id": 35092, "ts": "2026-07-26T09:28:27Z", "hours": 4.1481, "text": "As usual, I did a very assorted bunch of things: new admin tab so that i can change stuff without having to go onto my mac and hardcode stuff today view looks like paper - reminscient of the app icon! new about view the popover for subject details is smaller, removing bloat and a bunch of server improvements due to all of my users finding bugs and stuff!"}, {"post_id": 34919, "ts": "2026-07-26T00:43:54Z", "hours": 4.7894, "text": "I have expanded the home tab!! Theres three tabs at the top, today, week, and upcoming. week is what it already was upcoming shows term dates, no school days, school events, and also the users own personal events they make. the today view is a bit ugly but its sort of there! there also an admin page now, so that i dont have to hardcode term dates etc, i can just send them as api requests (for admin accounts only lol)"}, {"post_id": 34560, "ts": "2026-07-25T11:50:05Z", "hours": 0.755, "text": "Message extension got improved, it now checks if you have enabled sharing before allowing you to even sahre it, and tells"}, {"post_id": 34551, "ts": "2026-07-25T11:04:40Z", "hours": 0.5589, "text": "I’m adding countdowns everywhere, even when school is out, so that you can count the hours until your next period"}, {"post_id": 34537, "ts": "2026-07-25T10:29:10Z", "hours": 0.6072, "text": "This is currently the message extension ui. kinda ugly. that needs fixing I also updated the created timetables detail view, and (ignore the screenshot) removes the save button cos no one is going to remember to press save when they change details, so this should save some frustration."}, {"post_id": 34523, "ts": "2026-07-25T09:48:04Z", "hours": 1.6383, "text": "I improved the UI for this view, to better show classroom and teacher labels. I also renamed “Authored” to “Created”, apparently its better copy, according to my friend. The settings got cleaned up a bit, and importing from calendar again needs confirmation"}, {"post_id": 34495, "ts": "2026-07-25T08:06:40Z", "hours": 1.9119, "text": "I found an xcode bug, something to do with compilation errors for incorrect architecture, i dont get it but i gave apple feedback."}, {"post_id": 34418, "ts": "2026-07-25T03:27:42Z", "hours": 0.5558, "text": "So I made a few more adjustments like removing the APNs registration page from onboarding to make onboarding even more seamless Not important though. I discovered a really annoying problem: When I try to add iPad support, build fails because its trying to embed the watch app which obviously doesnt work on ipad. and xcode isnt letting me fix that. 😐"}, {"post_id": 34073, "ts": "2026-07-24T15:06:09Z", "hours": 4.9253, "text": "I made some UI rehauls again lol Current day receives theis blur effect which kinda looks like real light bouncing inside a box under the current day The accent colour of the app is now brown, as I am trying to make the app feel more like paper, which will become more obvious as i later add paper elements and views inside the app. My last update released a new account backend, which meant some users were not able to log in, so i decided to nuke the database and reset everything 💀 but anyway it worked and i upgraded the server to be better at handling this The sheet to add a shared timetable is improved, with blur effects and stuff, and that tiemtable preview has gotten much better it was pretty bad before ngl"}, {"post_id": 33492, "ts": "2026-07-23T14:13:01Z", "hours": 6.9467, "text": "I did a bunch of things: current day highlight in ios improve the notification early sending, to allow users to send notifications at multiple offsets remake the ui for share timetable sheet also the ui for the link customisation, tinted mint for whatever reason sharing links is now a URL, which prompts you to open the app but uses decently ugly html, ill fix later. New icon for apple watch that is optimised for the smaller display size (just made the components bigger and removed some duplicate elements added some mroe developer items at the bottom, doesnt serve much purpose just looks cool lol i removed the status badges that show success, cos i thought they would annoy the user with too many success alerts, and success when you are toggling settings doesnt really need alerts, so yeah. i also hit a bug where notifications would send twice, i had to improve the apns token system to not duplicate tokens for a device. on startup the app shows “restoring account…” every time, so i had to cache the profile data to make it stay signed in until explicitly signed out. its kinda hard to see in the screenshot but there is progressivew blur at the bottom and top, looks nice"}, {"post_id": 32346, "ts": "2026-07-21T13:36:10Z", "hours": 3.2925, "text": "I had a bug where the device could receive 2 notifications and live activities for each device, so I had to remake the APNs (apple push notification service) token management. I also added a highlight around the current day, with the setting to disable it. i thought a stroke was better than a fill because its less overwhelming and doesn’t break the ui style."}, {"post_id": 32261, "ts": "2026-07-21T10:07:38Z", "hours": 2.5917, "text": "😍"}, {"post_id": 31757, "ts": "2026-07-20T12:16:31Z", "hours": 0.9472, "text": "As you saw before the onboarding UI was a bit broken, so I went through and fixed it up and also trimmed down how many pgaes it has. Those bottom buttons aren’t concentric for some reason, even though I am using the built-in toolbar API, so I can’t fix it. Oh well. And it’s done to 8 pages, from 13. I still have som non-UI bugs to fix."}, {"post_id": 31728, "ts": "2026-07-20T11:15:51Z", "hours": 3.0553, "text": "Updated splash screen Notificaitons now have threads (each school day is a thread) macos window size animation fixed (the macos window resizes depending on the current state of the app, like currently selected tab etc. fixed some bugs in live activities and server authentication"}, {"post_id": 31613, "ts": "2026-07-20T04:58:28Z", "hours": 2.3833, "text": "Fixed some server bugs, a user reported getting “forbidden” status messages, turns out I forgot to migrate the database 😐 And other UI refinements: Tab bar uses monospace font version and build in settings feedback sheet"}, {"post_id": 31570, "ts": "2026-07-20T02:25:41Z", "hours": 0.5333, "text": "Plus a version for debug builds, I think they came out really nice!!"}, {"post_id": 31548, "ts": "2026-07-20T01:23:34Z", "hours": 0.4489, "text": "I think this is pretty much it."}, {"post_id": 31538, "ts": "2026-07-20T00:55:26Z", "hours": 0.7164, "text": "I think I’m getting there"}, {"post_id": 31518, "ts": "2026-07-20T00:10:10Z", "hours": 0.2719, "text": "I think I’ve locked in to this one. Now I need to figure out what to actually put on the papar, im thinking it has to be a kind of simplifed version of the existing main UI of my app. something kinda like a calendar schedule"}, {"post_id": 31513, "ts": "2026-07-19T23:53:55Z", "hours": 0.6131, "text": "So many variants! and idk which one is best"}, {"post_id": 31504, "ts": "2026-07-19T23:17:08Z", "hours": 2.4258, "text": "Many many iterations later… I’m leaning towards that paper one, it looks really tasteful i think. im not sure what to put on the paper though"}, {"post_id": 31176, "ts": "2026-07-19T11:22:39Z", "hours": 0.635, "text": "I think they are coming along really nicely!!!! The watchOS version has bigger title text and less handwriting rows cos its a smaller display size, i really like this 😃 the refraction effects 👌"}, {"post_id": 31171, "ts": "2026-07-19T10:43:22Z", "hours": 0.2894, "text": "I think it’s looking preetty good so far"}, {"post_id": 31156, "ts": "2026-07-19T10:22:03Z", "hours": 0.3833, "text": "More experiments, cos the previous multicolour outline was kinda ugly, now i’m thinking of adding the fake handwriting instead, it might look nice"}, {"post_id": 31145, "ts": "2026-07-19T09:51:42Z", "hours": 6.1353, "text": "I needed a new design system for my app, currently it was just a font and thats about it. Below are some experimental app icons I’ve been tweaking in sigma, they are made out of “paper” and represent a new theme I could use, which is literal paper as the design language. I think it could merge with Liquid Glass really nicely if done properly. Otherwise, other improvements: New App Intents for Apple Intelligence Allow users to set a custom share link URL, for example timetable.adonis.pt/sharedtimetable/adon’s_timetable More server tests + server improvements due to finding bugs in tests"}, {"post_id": 30567, "ts": "2026-07-18T07:42:48Z", "hours": 0.7647, "text": "I have also decided to remove Apple wallet integration, it just kinda got too messy. so im now going to revert (yes, revert 😭) back to an iMessage extension that lets you share timetables with a link. it fixes some annoying things that wallet integration has, like syncing etc. I can even allow custom link urls for a shared timetable!"}, {"post_id": 30552, "ts": "2026-07-18T06:53:52Z", "hours": 4.8108, "text": "I got carried away, since right now I am just going through and fixing the feedback my beta users gave me, starting with these: improving the onboarding flow to decrease the amount of pages, and condense some other pages, since testers said there were too many. Upgrade the server so that it only allows iOS to make changes to anything, since watchos and ipados and macos can only view, not edit. i added some tests, using codex, on the server. I’m getting tired of manually debugging every single problem I find by hand, I just make tests and its a much easier way of guaranteeing your server works perfectly. the client app is going to be much harder to add tests to, though. and more other random stuff I found and UI fixes etc. The screenshots are some broken UI stuff I found, I can’t really show you server bugs other than these error alerts. Going good so far though, can’t wait to release this as a v3!"}, {"post_id": 30017, "ts": "2026-07-17T08:18:20Z", "hours": 1.2478, "text": "After releasing v2 testflight, my friends pointed out a very large amounts of bugs in the app 😭 so I am now just trying to fix everything they pointed out. I’m pretty sure the server doesn’t have any issues, so at least that’s good. First bug is this bottom bar looks horrendous, This was fine for me cos I set my dynamic text size to small 😭"}, {"post_id": 28834, "ts": "2026-07-15T10:39:28Z", "hours": 2.2433, "text": "I made some final refinements to make sure account management on macOS works, so that my users can actually use the app, and then some other UI refinements, mainly for settings. there are a bunch of weird things i am yet to fix, but im really tired and just want to get this app out, so ill fix them later."}, {"post_id": 26526, "ts": "2026-07-11T11:56:12Z", "hours": 0.4547, "text": "I added some more pages to the onboarding, since that’s the only way I can show users how the app works cos it ngl is kinda obscure. i also added a report feedback or bug button, which needs some ui adjustments bruh"}, {"post_id": 26359, "ts": "2026-07-11T03:14:52Z", "hours": 1.1214, "text": "I can’t really show you haptics but i added haptics to buttons and the status badges. not much to say honestly. theres a toggle in settings to turn that on and off."}, {"post_id": 25978, "ts": "2026-07-10T14:57:41Z", "hours": 0.8503, "text": "I;m nearly read to release version 2 of the app, so i made a list of final tweaks and little improvements to make it as best I can, i think i can release it in a few days."}, {"post_id": 25832, "ts": "2026-07-10T09:47:11Z", "hours": 3.5725, "text": "I improved the friends subjects widgets with concentric corners and stuff."}, {"post_id": 24646, "ts": "2026-07-08T11:25:32Z", "hours": 2.6925, "text": "I think I have built out pretty much all of the projects, but i need to fix the abundance of bugs and problems that i have. the first one was fixing a problem with server syncing, and making watch depend on signing in on the phone, not by itself."}, {"post_id": 23437, "ts": "2026-07-06T12:20:38Z", "hours": 1.6219, "text": "I refined the live activities (that background is for recess and lunch, even though this preview text says before school)"}, {"post_id": 23389, "ts": "2026-07-06T09:53:29Z", "hours": 8.7292, "text": "I added live activities, although they are currently kinda ugly and need much improvement. I also made the watch app independent, because it doesnt need the iphone much really, it can just contact the server. i still have more work in making the server work better and stop giving me random errors, but yeah."}, {"post_id": 22056, "ts": "2026-07-04T09:37:57Z", "hours": 2.8419, "text": "In the onboarding I added pages to teach the user the features of the app, but I havent finished it yet. it needs a few more pages and refinement for smalelr phone screens"}, {"post_id": 21441, "ts": "2026-07-03T12:12:36Z", "hours": 6.5136, "text": "I have added an onboarding view that i really like, its very colourful and stuff. i also improved the server to be able to send notifications to users, to tell them when their next class is."}, {"post_id": 20474, "ts": "2026-07-02T02:23:36Z", "hours": 3.1183, "text": "I added notifications to the app, so that people can receive information in the form of notifications as well as live activities and app intents and widgets. I also improved the share pass button in the prominent tab bar, so that you see this sheet to select what pass you want to share, not just the user’s own timetable."}, {"post_id": 19907, "ts": "2026-07-01T10:45:28Z", "hours": 0.4294, "text": "Much better blur, although the server is taking a full 2.5 seconds to send back the pass, and i need to reduce that as much as possible"}, {"post_id": 19874, "ts": "2026-07-01T09:07:49Z", "hours": 0.5289, "text": "The timetable has some shadow behind it. I wanted to make the card HDR, but after a lot of experimenting i found apple doesn’t let you use hdr in your app like this, so i had to instead do this shadow 😐"}, {"post_id": 19839, "ts": "2026-07-01T07:27:59Z", "hours": 5.4344, "text": "I finished the search view, and i spent a very long time on perfecting some visual animations and stuff. when you click on a search result it separately animates the title in. also, before you search anything, i thought instead of showing most downloaded timetables or something i show this really squishy and fun pokemon-style timetable wallet pass. the settings view has also been improved a bit, to make some settings more clear, but i still need to refine it alot further to get it working really nicely."}, {"post_id": 19231, "ts": "2026-06-30T14:26:57Z", "hours": 3.5647, "text": "I did some debugging and made quite a lot more endpoints, I think I’m ready to move on to making the app."}, {"post_id": 18340, "ts": "2026-06-29T13:38:09Z", "hours": 5.9711, "text": "It took quite some time, but i got some really nice looking status badges! I’m really proud of how they came out, they look very juicy, and i cant show it here but i promise its very touchable and squishy and animated! 🥰"}, {"post_id": 17491, "ts": "2026-06-28T09:18:06Z", "hours": 1.3717, "text": "I’ve built a few endpoints and documented them in rapidapi, ready to import into the client app."}, {"post_id": 17396, "ts": "2026-06-28T04:54:23Z", "hours": 2.2958, "text": "I finally got the server working! took a really long time to get https working though, nginx was impressively difficult"}, {"post_id": 16990, "ts": "2026-06-27T15:55:13Z", "hours": 3.0039, "text": "I have started building the server, using swift vapor. i chose vapor because it is written with swift, like my project, which made it easier to share code between the two files."}, {"post_id": 16274, "ts": "2026-06-26T13:42:03Z", "hours": 4.8597, "text": "Xcode seems to have become extremely broken or something, i spent the last 4 hours trying to make my widget work but Xcode kept erroring out and eating memory swap, and now i have some trouble with making the imported timetables actually show up in the widgets i already made 😡"}, {"post_id": 15592, "ts": "2026-06-25T11:12:59Z", "hours": 0.6642, "text": "I changed the blur effect to this, which i think is much better, because it has less blur, and doesnt add an ugly grey tint, so black background stays black background."}, {"post_id": 15058, "ts": "2026-06-24T13:45:05Z", "hours": 0.5081, "text": "I added this blur effect behind the share sheet, and I think it looks really nice. I had to import a package to get a blur this clear"}, {"post_id": 15044, "ts": "2026-06-24T13:04:35Z", "hours": 1.7442, "text": "I added a share button in the bottom left, which allows the user to share their timetable in one press, using the .prominent Tab style so that it looks seperate from the other tabs while still looking consistent."}, {"post_id": 13120, "ts": "2026-06-21T13:40:22Z", "hours": 1.0011, "text": "So added the ability to share timetables using apple wallet, along with sending them using messages, i think that background will need to get fixed for readability, but otherwise, i like it alot."}, {"post_id": 13066, "ts": "2026-06-21T11:31:59Z", "hours": 3.4256, "text": "I added some App Intents, below is my current subject intent, and also a list of received timetables intent. It took a lot longer than expected because the app intents framework was quite confusing to get working, but i got a nice UI in the end."}, {"post_id": 12370, "ts": "2026-06-20T05:56:30Z", "hours": 1.4289, "text": "I upgraded the watch views, like making the progress rectangle rounded, and this very colourful background for when its recess and lunch"}, {"post_id": 11882, "ts": "2026-06-19T11:15:08Z", "hours": 2.4344, "text": "I updated the background of the window, including in light mode, and I also remade the icon. The settings also looks much better than it was before, and I made a nice window animation for when you click a slot to see what your friends have."}, {"post_id": 9773, "ts": "2026-06-16T06:48:43Z", "hours": 1.3667, "text": "I made some refinements to the watchOS and iOS app, including design and performance."}, {"post_id": 9217, "ts": "2026-06-15T14:09:02Z", "hours": 0.8633, "text": "I made some design adjustments to the macOS app, giving it a blur background. Also, the weekly shedule widget has had its corner radiuses and colours adjusted to be less harsh and look better."}, {"post_id": 9192, "ts": "2026-06-15T13:10:48Z", "hours": 0.2592, "text": "I added some buttons and refined the UI of settings view"}, {"post_id": 9182, "ts": "2026-06-15T12:32:38Z", "hours": 0.5969, "text": "I continued to refine the design of the macOS widget, and I really like it now."}, {"post_id": 9098, "ts": "2026-06-15T06:29:44Z", "hours": 3.9675, "text": "I fixed the widget extension problem by making two widget extensions, one for watch and one for other platforms, and made them use identical code. And then I refined the widget design for macOS and iOS and i think they look really nice now."}, {"post_id": 7893, "ts": "2026-06-13T05:18:30Z", "hours": 0.5119, "text": "I added support for these widgets from only watch to iphone and ipad and macOS, and currently they are ugly and unrefined, so I’m going to fix them now."}, {"post_id": 7438, "ts": "2026-06-12T11:50:09Z", "hours": 3.1881, "text": "I ported the app over to macOS, which was harder than I thought because there was a lot of code throughout every screen that was for connecting iphone to apple watch or some other iOS-only thing, which I had to conditionally compile out for macOS. then I needed to refine the views to work on macOS well, for example the class editor sheet used a sidebar instead of the scrolling tabview on iOS. There’s still more work to do to refine it more and get CloudKit working so that the timetable syncs across devices."}, {"post_id": 6885, "ts": "2026-06-11T15:22:19Z", "hours": 2.7783, "text": "I added these views to the watch, so you can see how much time is left in a session for yourself, and also for others. i also refined the timetable view to not use so much glass because it was lagging the TabView. The main clock uses a liquid glass background against the background progressview, and what class is next."}, {"post_id": 6796, "ts": "2026-06-11T12:06:20Z", "hours": 0.8469, "text": "I fixed the sync button visuals, it now has a blur replace transition effect. the timetable comparison view also blurs in and out when you click around"}, {"post_id": 6781, "ts": "2026-06-11T11:08:53Z", "hours": 2.6286, "text": "I moved the sync button to settings, so that the toolbar in the timetable tab could be removed. this is to make way for this new bottom half of the screen that shows other people’s timetables when you click on the slot in the top half, replacing the previous system of letting you select someone else and see their whole timetable covering your timetable. this system lets you view your own timetable and compare it with everyone else’s at a particular period. It uses a soft scroll edge effect at the bottom, and a hard effect at the top, which i think looks really nice. the second image shows the content scrolling under the timetable, which i really liked."}, {"post_id": 6247, "ts": "2026-06-10T14:30:26Z", "hours": 0.8989, "text": "I’m just refining the software a but before I start adding Siri support and improving Messages import/export flow. I fixed this comparison view, improved the class editor to show the glass nicer, and the settings toolbar has a gradient blur effect instead of hard blur, which was made the new default toolbar background style, which imo is ugly."}, {"post_id": 6208, "ts": "2026-06-10T12:53:06Z", "hours": 4.0678, "text": "I renamed PMS Timetable to Timetable, which took more time than I expected cos it was embedded in like every single file and I even had to go through binary files and just delete all the instances of “pms” . then this managed to corrupt Xcode and make it crash every time I opened it, and i had to delete some stuff to fix that. Now I’m on the OS27 version and I’m going to start fixing some UI."}]...
|
Title: Timetable by @omeriadon | Stardance
Devlog Title: Timetable by @omeriadon | Stardance
Devlogs:
I renamed PMS Timetable to Timetable, which took more time than I expected cos it was embedded in like every single file and I even had to go through binary files and just delete all the instances of “pms” . then this managed to corrupt Xcode and make it crash every time I opened it, and i had to delete some stuff to fix that. Now I’m on the OS27 version and I’m going to start fixing some UI.
I’m just refining the software a but before I start adding Siri support and improving Messages import/export flow. I fixed this comparison view, improved the class editor to show the glass nicer, and the settings toolbar has a gradient blur effect instead of hard blur, which was made the new default toolbar background style, which imo is ugly.
I moved the sync button to settings, so that the toolbar in the timetable tab could be removed. this is to make way for this new bottom half of the screen that shows other people’s timetables when you click on the slot in the top half, replacing the previous system of letting you select someone else and see their whole timetable covering your timetable. this system lets you view your own timetable and compare it with everyone else’s at a particular period. It uses a soft scroll edge effect at the bottom, and a hard effect at the top, which i think looks really nice. the second image shows the content scrolling under the timetable, which i really liked.
I fixed the sync button visuals, it now has a blur replace transition effect. the timetable comparison view also blurs in and out when you click around
I added these views to the watch, so you can see how much time is left in a session for yourself, and also for others. i also refined the timetable view to not use so much glass because it was lagging the TabView. The main clock uses a liquid glass background against the background progressview, and what class is next.
I ported the app over to macOS, which was harder than I thought because there was a lot of code throughout every screen that was for connecting iphone to apple watch or some other iOS-only thing, which I had to conditionally compile out for macOS. then I needed to refine the views to work on macOS well, for example the class editor sheet used a sidebar instead of the scrolling tabview on iOS. There’s still more work to do to refine it more and get CloudKit working so that the timetable syncs across devices.
I added support for these widgets from only watch to iphone and ipad and macOS, and currently they are ugly and unrefined, so I’m going to fix them now.
I fixed the widget extension problem by making two widget extensions, one for watch and one for other platforms, and made them use identical code. And then I refined the widget design for macOS and iOS and i think they look really nice now.
I continued to refine the design of the macOS widget, and I really like it now.
I added some buttons and refined the UI of settings view
I made some design adjustments to the macOS app, giving it a blur background. Also, the weekly shedule widget has had its corner radiuses and colours adjusted to be less harsh and look better.
I made some refinements to the watchOS and iOS app, including design and performance.
I updated the background of the window, including in light mode, and I also remade the icon. The settings also looks much better than it was before, and I made a nice window animation for when you click a slot to see what your friends have.
I upgraded the watch views, like making the progress rectangle rounded, and this very colourful background for when its recess and lunch
I added some App Intents, below is my current subject intent, and also a list of received timetables intent. It took a lot longer than expected because the app intents framework was quite confusing to get working, but i got a nice UI in the end.
So added the ability to share timetables using apple wallet, along with sending them using messages, i think that background will need to get fixed for readability, but otherwise, i like it alot.
I added a share button in the bottom left, which allows the user to share their timetable in one press, using the .prominent Tab style so that it looks seperate from the other tabs while still looking consistent.
I added this blur effect behind the share sheet, and I think it looks really nice. I had to import a package to get a blur this clear
I changed the blur effect to this, which i think is much better, because it has less blur, and doesnt add an ugly grey tint, so black background stays black background.
Xcode seems to have become extremely broken or something, i spent the last 4 hours trying to make my widget work but Xcode kept erroring out and eating memory swap, and now i have some trouble with making the imported timetables actually show up in the widgets i already made 😡
I have started building the server, using swift vapor. i chose vapor because it is written with swift, like my project, which made it easier to share code between the two files.
I finally got the server working! took a really long time to get https working though, nginx was impressively difficult
I’ve built a few endpoints and documented them in rapidapi, ready to import into the client app.
It took quite some time, but i got some really nice looking status badges! I’m really proud of how they came out, they look very juicy, and i cant show it here but i promise its very touchable and squishy and animated! 🥰
I did some debugging and made quite a lot more endpoints, I think I’m ready to move on to making the app.
I finished the search view, and i spent a very long time on perfecting some visual animations and stuff. when you click on a search result it separately animates the title in. also, before you search anything, i thought instead of showing most downloaded timetables or something i show this really squishy and fun pokemon-style timetable wallet pass. the settings view has also been improved a bit, to make some settings more clear, but i still need to refine it alot further to get it working really nicely.
The timetable has some shadow behind it. I wanted to make the card HDR, but after a lot of experimenting i found apple doesn’t let you use hdr in your app like this, so i had to instead do this shadow 😐
Much better blur, although the server is taking a full 2.5 seconds to send back the pass, and i need to reduce that as much as possible
I added notifications to the app, so that people can receive information in the form of notifications as well as live activities and app intents and widgets. I also improved the share pass button in the prominent tab bar, so that you see this sheet to select what pass you want to share, not just the user’s own timetable.
I have added an onboarding view that i really like, its very colourful and stuff. i also improved the server to be able to send notifications to users, to tell them when their next class is.
In the onboarding I added pages to teach the user the features of the app, but I havent finished it yet. it needs a few more pages and refinement for smalelr phone screens
I added live activities, although they are currently kinda ugly and need much improvement. I also made the watch app independent, because it doesnt need the iphone much really, it can just contact the server. i still have more work in making the server work better and stop giving me random errors, but yeah.
I refined the live activities (that background is for recess and lunch, even though this preview text says before school)
I think I have built out pretty much all of the projects, but i need to fix the abundance of bugs and problems that i have. the first one was fixing a problem with server syncing, and making watch depend on signing in on the phone, not by itself.
I improved the friends subjects widgets with concentric corners and stuff.
I;m nearly read to release version 2 of the app, so i made a list of final tweaks and little improvements to make it as best I can, i think i can release it in a few days.
I can’t really show you haptics but i added haptics to buttons and the status badges. not much to say honestly. theres a toggle in settings to turn that on and off.
I added some more pages to the onboarding, since that’s the only way I can show users how the app works cos it ngl is kinda obscure. i also added a report feedback or bug button, which needs some ui adjustments bruh
I made some final refinements to make sure account management on macOS works, so that my users can actually use the app, and then some other UI refinements, mainly for settings. there are a bunch of weird things i am yet to fix, but im really tired and just want to get this app out, so ill fix them later.
After releasing v2 testflight, my friends pointed out a very large amounts of bugs in the app 😭 so I am now just trying to fix everything they pointed out. I’m pretty sure the server doesn’t have any issues, so at least that’s good. First bug is this bottom bar looks horrendous, This was fine for me cos I set my dynamic text size to small 😭
I got carried away, since right now I am just going through and fixing the feedback my beta users gave me, starting with these: improving the onboarding flow to decrease the amount of pages, and condense some other pages, since testers said there were too many. Upgrade the server so that it only allows iOS to make changes to anything, since watchos and ipados and macos can only view, not edit. i added some tests, using codex, on the server. I’m getting tired of manually debugging every single problem I find by hand, I just make tests and its a much easier way of guaranteeing your server works perfectly. the client app is going to be much harder to add tests to, though. and more other random stuff I found and UI fixes etc. The screenshots are some broken UI stuff I found, I can’t really show you server bugs other than these error alerts. Going good so far though, can’t wait to release this as a v3!
I have also decided to remove Apple wallet integration, it just kinda got too messy. so im now going to revert (yes, revert 😭) back to an iMessage extension that lets you share timetables with a link. it fixes some annoying things that wallet integration has, like syncing etc. I can even allow custom link urls for a shared timetable!
I needed a new design system for my app, currently it was just a font and thats about it. Below are some experimental app icons I’ve been tweaking in sigma, they are made out of “paper” and represent a new theme I could use, which is literal paper as the design language. I think it could merge with Liquid Glass really nicely if done properly. Otherwise, other improvements: New App Intents for Apple Intelligence Allow users to set a custom share link URL, for example timetable.adonis.pt/sharedtimetable/adon’s_timetable More server tests + server improvements due to finding bugs in tests
More experiments, cos the previous multicolour outline was kinda ugly, now i’m thinking of adding the fake handwriting instead, it might look nice
I think it’s looking preetty good so far
I think they are coming along really nicely!!!! The watchOS version has bigger title text and less handwriting rows cos its a smaller display size, i really like this 😃 the refraction effects 👌
Many many iterations later… I’m leaning towards that paper one, it looks really tasteful i think. im not sure what to put on the paper though
So many variants! and idk which one is best
I think I’ve locked in to this one. Now I need to figure out what to actually put on the papar, im thinking it has to be a kind of simplifed version of the existing main UI of my app. something kinda like a calendar schedule
I think I’m getting there
I think this is pretty much it.
Plus a version for debug builds, I think they came out really nice!!
Fixed some server bugs, a user reported getting “forbidden” status messages, turns out I forgot to migrate the database 😐 And other UI refinements: Tab bar uses monospace font version and build in settings feedback sheet
Updated splash screen Notificaitons now have threads (each school day is a thread) macos window size animation fixed (the macos window resizes depending on the current state of the app, like currently selected tab etc. fixed some bugs in live activities and server authentication
As you saw before the onboarding UI was a bit broken, so I went through and fixed it up and also trimmed down how many pgaes it has. Those bottom buttons aren’t concentric for some reason, even though I am using the built-in toolbar API, so I can’t fix it. Oh well. And it’s done to 8 pages, from 13. I still have som non-UI bugs to fix.
😍
I had a bug where the device could receive 2 notifications and live activities for each device, so I had to remake the APNs (apple push notification service) token management. I also added a highlight around the current day, with the setting to disable it. i thought a stroke was better than a fill because its less overwhelming and doesn’t break the ui style.
I did a bunch of things: current day highlight in ios improve the notification early sending, to allow users to send notifications at multiple offsets remake the ui for share timetable sheet also the ui for the link customisation, tinted mint for whatever reason sharing links is now a URL, which prompts you to open the app but uses decently ugly html, ill fix later. New icon for apple watch that is optimised for the smaller display size (just made the components bigger and removed some duplicate elements added some mroe developer items at the bottom, doesnt serve much purpose just looks cool lol i removed the status badges that show success, cos i thought they would annoy the user with too many success alerts, and success when you are toggling settings doesnt really need alerts, so yeah. i also hit a bug where notifications would send twice, i had to improve the apns token system to not duplicate tokens for a device. on startup the app shows “restoring account…” every time, so i had to cache the profile data to make it stay signed in until explicitly signed out. its kinda hard to see in the screenshot but there is progressivew blur at the bottom and top, looks nice
I made some UI rehauls again lol Current day receives theis blur effect which kinda looks like real light bouncing inside a box under the current day The accent colour of the app is now brown, as I am trying to make the app feel more like paper, which will become more obvious as i later add paper elements and views inside the app. My last update released a new account backend, which meant some users were not able to log in, so i decided to nuke the database and reset everything 💀 but anyway it worked and i upgraded the server to be better at handling this The sheet to add a shared timetable is improved, with blur effects and stuff, and that tiemtable preview has gotten much better it was pretty bad before ngl
So I made a few more adjustments like removing the APNs registration page from onboarding to make onboarding even more seamless Not important though. I discovered a really annoying problem: When I try to add iPad support, build fails because its trying to embed the watch app which obviously doesnt work on ipad. and xcode isnt letting me fix that. 😐
I found an xcode bug, something to do with compilation errors for incorrect architecture, i dont get it but i gave apple feedback.
I improved the UI for this view, to better show classroom and teacher labels. I also renamed “Authored” to “Created”, apparently its better copy, according to my friend. The settings got cleaned up a bit, and importing from calendar again needs confirmation
This is currently the message extension ui. kinda ugly. that needs fixing I also updated the created timetables detail view, and (ignore the screenshot) removes the save button cos no one is going to remember to press save when they change details, so this should save some frustration.
I’m adding countdowns everywhere, even when school is out, so that you can count the hours until your next period
Message extension got improved, it now checks if you have enabled sharing before allowing you to even sahre it, and tells
I have expanded the home tab!! Theres three tabs at the top, today, week, and upcoming. week is what it already was upcoming shows term dates, no school days, school events, and also the users own personal events they make. the today view is a bit ugly but its sort of there! there also an admin page now, so that i dont have to hardcode term dates etc, i can just send them as api requests (for admin accounts only lol)
As usual, I did a very assorted bunch of things: new admin tab so that i can change stuff without having to go onto my mac and hardcode stuff today view looks like paper - reminscient of the app icon! new about view the popover for subject details is smaller, removing bloat and a bunch of server improvements due to all of my users finding bugs and stuff!
Theres now brown and white paper combined. its an interesting ui concept, makes no sense in real life, but i think it looks nonetheless! it definitely creates an app theme, regardless of if this theme looks good or not…
I made some UX adjsutments in the settings app, added some images, reordered haptics, etc the planner sub-tab has been rehauled, and shows items chronologically instead of in sections, which i thought was more intuitive. it still needs much more thought though, im not sure how to space them out since some gaps are months long.
Me and my friend did a bit of brainstorming, to get ideas on how to improve the app UI, UX and future features. cos we are planning a future release hopefully. so we gained a good idea of consolidating friends into a more clear friends tab, combingin the currently spread-around-everywhere friends stuff.
so me and my friend did some more brainstorming focussing on the new friends tab, and how friend accounts work, and profiles and pfps etc. we also aggregated a list of bugs and UI glitches in the app that still need fixing. the current first version is (moderately) broken 😭
i added a section in teh administration to be able to turn off the server for everyone except for me, so that i can maintain the server and test it. and also a section to manage other admins.
I made this widget, which is kinda like a summary widget for the user. it requires this large widget size to fit everything, and its goign to be more dynamic than the other widget which always show the same layout. i haven’t thought exactly how i’m going to do it though, below is a rough first version.
I’ve been busy remaking the profile editor, its coming together really nicely. that profile picture at the top is designed so that lets the other components take up their space, and then the pfp takes up the rest of the space. this allows the same view to not scroll while working on different phones and text sizes etc. and the background is animated!!!
The bottom colour grid is concentric to the device!!! although making the white outlines also behave nicely is proving really really hard, as you can see below
you can add special badges to people now, for like early birds or something idk. the profile picutre bakground has been upgraded a bit, but im going to have to fork the repo and adjust it myself, its currently not looking like a gradient but a single noisy colour, im gonna fix that.
Given the theme of this app, paper, widgets now get paper too! settings for profiles has been updated too you can now select black → white in the colour selector. friend detail view still kinda looks a bit empty and bland, im not quite sure how to make it feel alive
So the header in settings now reflects with your pfp colours for the profile editor, i made it now scrolling so that you could fit in all of the various options, like animation speed and noise and stuff. when you click on a class in today view, it shows some more details about the class like teacher and location. friends view also looks a bit nicer, both the list view and the detail view.
friends detail view shows a bit more content, and is redesigned for more paper you can reorder the badges around now for priority when they show in their overlay event tags editor looks a bit nicer plus, users can edit their year group after signing in.
some people were saying that it was really annoying that you could drag anywhere in a sheet to dismiss the sheet, you would be halfway through something and then you have to restart. so i went through all the sheets in the app and checked if they needed to remove this swiping. luckily it only needed one modifier per sheet. also, more tester feedback was that i shouldnt have sections for tags, so yeah i did that. also, now that there is a concept known as friends, instead of just shared timetables, i removed the option to allow people to have their timetables searched publicly. i havent figured out what i want for specific created timetables, i might lwk have to just remove that also users now have to fill in what year group they are when onboarding. for tags.
i just read an article that said @Environment(\.dismiss) is bad for performance dismiss() is a very simple and fast way to make a sheet or other modal view dismiss , but because its so simple and dynamic, that introduces lots of bugs apparently. so I had to go through all the sheets and this time replace dismiss() with better state management. i hope ill notice the performance improvements!
before and after some small ui improvements!!
I checked the localisation and it went down to 25%, so I went and pushed that back up to 100%. and the friend detail view has been improved a bit more
So so far up to now, I have completely neglected everything other than iPhone. i needed this so that i could focus on making iphone as seamless and intuitive and possible, and to push features faster. so now i have to go and basically remove all of the non-iPhone code and replace it with iphone code, and then try to make that work multiplatform. so i decided iphone is going to remain as a tabview, for now at least, but ipados, macos, and big iphones can use a navigation split view, shown below. so a sidebar and main view and an inspector on the right sometimes.
first version of timetable for macos 😭 its really ugly and lwk broken. so im gonna spend the next few hours fixing this incredibly “interesting” UI.
working with macOS is infuriating me, so i decided im going to make the macos app actually be mac catalyst, so its technically just running an ipad app. which makes sense. still needs alot more work, this refactor is proving very very annoying
its getting there! mac catalyst is definitely better than trying to make native macOS work. swiftui isnt really making it any better, its really really restrictive in terms of how i can structure my app. like for example that right column, has so many glitches that i cant really find solutions to because the bugs aren’t in my code, its infuriating.
Still just refactoring and remaking the app. i decided to remove OS 26 compatibility, because there is just too many APIs and stuff the images below are some stuff I’ve been refining: dragging friends around sideays iphone support (same thing as macOS + iPadOS) but I’ve decided now to not work on macOS (which is just iPadOS) and ipad until i perfect iphone and watch. should be fun!
I finished the refactoring for now, to make the app multi platform. So then i did some more brainstorming and I have consolidated what is the next few features I need to do tips, to tell the user about features the app has they sound easy but each tip needs rules and parameters and all kinds of obscure annoying things, so its going to be harder than it looks my first tip shown below An indicator next to each friend about their status, which is going to take the user’s location, taken in the background, to tell if they are on campus or off campus So from this you can tell when a user arrives at school or if they are sick iOS provides a function that will call my app, from the background, every time the user crosses a specific map polygon (The school). so i dont even need to do any map processing, my app just gets called every time the device goes in or out of school! plus i can add cool related features like the user’s average arrival time to school, which will be pretty cool!
Few things! Adminsitration gets new items for reported users and freinds-since requests sections in adminstration statistics for number of users, etc you can now see your status and other people’s status, like on or off campus new page that asks for location access ofc (ill move it into the onboarding later improved the add a friend sheet admins get emails for reported users, etc
user account data now has highlighted rows for faster navigation user reports look much better, as well as friends-since requests reporting or sending feedback sends notifications instead of emails, now
lots of little things instead of one big feature: i used to send emails, and i reached limits on the email provider so i had to move to only sending notifications, like device notifications. i still need an alternative, im looking through options now there used to be different settings view between iPhone and iPad, so i consolidated them into one view.you can now see your friend’s status as on or off campus. this uses location to check when you reach school or leave. this also allows some cool statistics like average school arrival time!there is better moderation, it shows in the admins view and lets the admin block or do nothing about the account. it will be expanded later to have more features and actions and stuff you can request to change your friends-since tag, also approved by admin.i deleted all (most) references to #if os(macOS) , since there is no more macOS build, its just iPad running on mac. small ui improvements: added search to some more administration views tapping an existing photo pro allows crop the tabview gets tab transitions, like the ones iOS 26 had (that ios27 removed 😡)year-level tags are separated from other tags expanded statistics!added archived events - events in the past - plus an option to automatically delete old events added a button to reset tips, since the app is getting more and more complicated the onboarding is less condensed, when that permission is first needed, its permission sheet request shows.more stuff gets cached in Defaults, making it more offline-safe.and some toolbar and blur and navigation title stuff.
some ui improvements (that weird box in the account view is Metal debug overlay, not my app)
Grade tracker!!! I know this is a very cliche topic but I had to implement this because it integrates so seamlessly with the app for example, it already knows your subjects (duh) and when you input the date of your assessment, it also knows which period of the day that is, because it knows your subjects! (duh) I also added ATAR, sthe user can set goals and stuff for what they want to achieve.
I decided to remove created timetables. they just don’t work anymore with the Friends concept, which makes it really annoying to adjacently share other timetables alongside having friends. its a shame, i wish it could have worked, maybe ill add it again later. oh well. im still just combing through the app and fixing all the little things i see: grade tracker gets a next item in the top for the top 4 subjects, which is important for atar. improved the friend detail view a bit better, because the old one had not enough information and was displaying badly.added more statistics to administration view cos its fun lol the tag selector view was improved, looks nicer and is a tiny bit more legible nowi changed the grade tracker weighting from semester to year. apparently thats the norm more friend detail view improvements
improving the friend detail view the padding is so much nicer, and the detail view also shows more info and in a better way the week subtab shows a similar timetable to the user’s own, and shows more info. and some more statistics lol
You can now change the font! this took more work than you would expect, because i did a find on the project and saw there were like 60 references to .monospaced, and each one had to be manually upgraded to dynamically apply font. i also tried to make the rounded font expanded, but after some inspection i found it doesnt even have a .expanded variant 😐 so the options i ended up with were monospaced, rounded, and expanded. no normal font. it just looks boring at this point. below is the same screen with each option! widgets also get the fonts, and they look actually insane ngl
I started work on rehauling the watchOS app And I really like how it’s coming out The watch is supposed to distill down the information the user needs, so i picked the current and next period, time, and their location. all these elements are glassy and stuff, so they are clickable, and its in a tabview that scrolls between each card. The first tab is the week view for the user. so I spent a good 2 hours trying to make a ScrollView work, but it didnt. sometimes the views teleported, some lagged, some glitched, and it was overall insanely annoying. so I moved to a tabview, which was considerably more stable, but removed the animations I wanted. it had its own animations which were fine, but yeah. Also, fonts also reflect on the watch! the one in the screenshots below is the expanded style, which to be honest isnt that good on watch since the watch is constrained as is, but yeah. The glass timetable actually looks insane I am still thinking of how to include other content, like grades maybe, and other things, but i dont want to make it too dense and slow
there is a new progress background: its not a background! inspired by the app icon / ios app, the progress view is now this marker thingy which fits into the app’s theme much nicer I’ve also been tweaking the font sizing, image sizing, padding, and gaps between the items here to make sure they look good at all possible subejct names etc. i also had to fight a bit with the safe area of the view, you can see in the image below the name “bob” ends slightly above the text, took me a lot longer than expected to fix that
I also made some improvements to the card height for the user’s own item. before, it was just the full width. Halfway while I was working on that, my TabView suddenly froze for a straight 20 seconds every time i changed the tab. this was very weird, and the CPU shows 0% usage, so I was quite surprised. After a large round of commenting things out and seeing what broke, I found it was a single .glassEffect() that I was using for the progress marker. I have no idea how a glass effect can make an entire tabview freeze, but fine. i replaced it with a simple red colour, as shown below, with a stroke and shadow, and i think it looks fine now.
I added a new devices statistics view. or more accurately, i expanded it. before, it just shows device platforms. now, it shows the os version, minor os version, and if it is a beta or not. i also added support for iOS 26 (previous builds only supported OS27 or later). this involved me just making some features not work on os26 😐 and supporting anything before OS26 would probably be legitimately impossible, so yeah not that.
Big update! Light mode! The app used to be dark mode only, it let me make it look much more pixel-perfect and refine colours and stuff, but its kinda obvious you cant keep the app dark mode only, its just not good. so i went through everything, adding light mode versions of paper, text, glass, etc. took me quite a bit of time because i was trying to maintain consistency while doing it, which included alot of redoing things and creating view modifiers and manually applying each one, etc i also added weatherkit, its just a single line in the today tab, but its nice. while adding light mode support, i found a really nice blur view i could add to lists, so now each lists’s background is nothing other than a blur! i also decided to make all backgrounds made out of paper, and i think it looks nice? theres also now a statistics page for deices and os versions and builds and stuff, itll be more useful later. as well as knowing when your friends arrive to school, i added the ability to know when they are within 5 or 10 mins, and to send notifications for that. average arrival also is split by day now, because people arrive to school at different times per day theres a new tab picker, which you can see int eh controls, its much more glassy than the last one, which is really really playful and stuff! i still have more work to do in terms of ui work, excluding light mode refinements, like notifications and widgets, but yeah.
I added accessibility improvements, mainly like labels and tags and stuff, for use with voice over etc. this was triggered by me installing a developer process into my app which allowed me to iterate on design faster, and it depended on accessibility elements to discover each element. (the purple thing lets you tap elements and comment on them) i also tried a new background for the cards, as you can see below, its just glass and i think it looks pretty nice
You can now edit the foreground colours for your profile picture monogram i also completed light mode support for widgets
I added custom backgrounds! Theres the paper backgrounds i added recently, and then the solid colours, and then also some of the really nice apple ones idk what they are called (i hope apple doesnt copyright me 😭) so yeah it applies to all backgrounds in the app i think it merges really nice with the liquid glass and blur backgrounds different views have it also shows on watch i also added an option to choose how far forward you see events. theres also even more statistics for what app version people are using!
So supporting light mode calls for an icon redesign, at least just for light mode, and here they are! Though to be honest, the entire app is gonna need a redesign, because I need to rename it from Timetable, because it has expanded into doing so much more, and timetable is a bit of a boring name. finding names is so insanely annoying though, but oh well.
I spent some time to work on this search button and its animation. idk if the video plays, but it uses apples glass effect transitions! I also made the confirmation dialogs for removing and reporting a friend better, before they just popped up in the middle of the screen, now it comes out of the menu (also found another ios27 beta bug 😐)
A somewhat interesting devlog this time. I spend a good 2 hours just trying to make live activities work. the miserable part is that they were already working before 😭 I dont even know what I did but it broke. And while i was trying to make a debug button to start a live activity, yeah it just wasn’t working. all kinds of problems with not submitting a good APNs token. and i had to like stop activities before starting new ones and stuff it was just in general really annoying. there was even more problems but its too much to say here 😔 anyway, i have started cleaning up the app. no more big features, to be honest, until i add a website for this thing!! should be really easy since the backend is clearly all done lol events can show weather for them, such as the athletics carnival i removed the ridiculous backgrounds i allowed users to choose, theres no only solid black/white and paper. more reasonable, i think. as part of my optimisation, i removed settings i found useless. haptics are now always on, and highlighting the current day is always on. profile pictures can now have their foreground colour set, like the Monogram can have its colour optimised.you can see the average for when your friends arrive to school per day, instead of in total. developer settings also got reorganised, more settings only show to developers. yet again cleaning up the app experience. the location status was a bit unreliable, if users were offline, etc, so i added multiple ways the app pushes updates to the server, and queued statuses when the device was offline. i also refined the actual radius for what counts as within 5 / 10 minutes, should be a bit better. i havent thought about people who live within 10 minutes, thats an interesting case the subject editors grid also looks nicer (still needs more improvement though the tabview now hides while scrolling, like it collapses into the corner, like apple apps! you can manually turn off sharing your status, for privacy reasons. and some more things i forgot 🥹 im so excited for this thing to actually launch!!!!!
new icons. the old one that now supports light mode was kinda ugly.
Ok so after a bunch of wrestling with nginx and bun and next.js, i have added the website! its at https://timetable.adonis.pt/ and the current api has been moved to https://timetable.adonis.pt/api Its the usual next.js thing. and it uses bun. my design idea for this is to look like its an ipad app, essentially, and im going to see exactly how far i can take the mimicking, maybe i can even add liquid glass to the web 💀 So yeah no more app building, now its website! It’s gonna be so much easier as well because I aleady have the backend done and tested, so this should be all design which will be really fun.
The website is alive! I got a screenshot of an iOS26 sidebar, and i am copying it, as you can see. looks nice i think
Hehehehe I’ve got a working version of liquid glass It uses gsap, which is nice the second image is an earlier version 😭
Its nice and squishy now! It uses gsap for this as well gsap is a great framework ngl
And now it scales up and down and stuff!!! I still can’t believe this is just html and css and js 😭 Theres so many parameters to tweak to make it feel right, its so finicky And depending on the size of the glass, you have to change the numbers, its kinda confusing honestly
So I’ve made the first version of the website, it’s really insanely buggy and broken, but the ui is there. so have the html good but no i need to really tweak the css to make it look nice, apple-style. i also need to figure out how to make loading states look nice, since unlike the the swiftui app, i can’t cache anything to not show loading state. in the plus side i dont have to deal with offline state, though. the sidebar and the toolbar are finished, and look really nice. the sidebar has an effect (from ipados) that basically reflects the content in a subtle blurred way, to make it feel like glass while not actually rendering anything expensive. The toolbar is just glass buttons + a black fade effect + progressives blur, also tuned to look like ipados. the icon in the sidebar is pretty ugly honestly so i need to replace that with the non-bordered icon. The other problem i am dealing with is that we are planning a complete redesign of the entire swiftui app, and obviously that has to propagate to the website, so any work i do now is kinda gonna be half wasted, depending on what the redesign actually looks like.
I’m still working on making the UI look much better, and I’m still figuring out some website stuff like how i should wire up the sidebar tabs as well as having like a nice homepage to advertise everything the app does, which will be a really fun sub-project. Turns out making nice looking lists in react is much harder than it looks, as shown below 😭 one problem is that each symbol has a different aspect ratio so i dont even know how to fit them nicely And unlike swiftui, its raelly raelly hard to stay consistent in your css and to keep using the ui tokens instead of making custom css everywhere. it looks like the website is gonna be harder than the app to make after all 😔 this classes card though, for example, i think its pretty much almost done. i might need a few more borders to make it look glassy and stuff but it looks exactly like the ios version, which is the end goal! And I added the animations to the classes card, again exactly like the iphone app. i also got a vscode extension that shows you all of your unused css classes, i highly recommend getting one and purging your codebase!
So the previous UI was really ugly, to be honest, so i decided I am oing to scrap half of the design and completely unstyle the entire app while making everything as standardised as possible, by trying to only use reused components as much as possible. So I spent all today stripping out components I didn’t need, then take the surviving components and adjusting them to my use case and making then look as nice as I can. alert dialogs drawers buttons lists section cards switches I have also decided to stop using tailwind because its quite simply messy and much more confusing than just moduled css, so ye
I have pretty much finished the components, I’m going to now go and add the other shared components and improve them too. then im gonna go through the css files and clear anything that is unused or overcomplicated, and then i can start remaking the website!
I think I have finished making all of the shared components I put everything inside accordions to organise the test components Overlays get the same translucency and outline every other component gets I think im happy with how the lists look, finally the option selectors are really really hot!!! The first page I have remade is the About view, which shows this badge if you are on localhost lol i also had to move the contributors up to the server instead of hardcoding them so that both website and app can see it And a really nice little animated gradient thingy for the about view!!
I have started using the shared components around the website, and its actually looking pretty nice! most importantly, these components can be changed once and work everywhere and i removed the drawers i was using everywhere, and i also made said drawers wider while i was rehauling the drawers i also kinda broke their animations and i don’t know how to fix it 😭 the whole website looks really basic now, since its obviously using now the shard unstyled components, and i was thinking about the theme and decided maybe it should be unstyled, and only the user’s own events and content etc can have colours.
I started to make the landing page, and i decided, after very much research from other landing sites I’ve seen, that the main item should be an interactive timetable, a version of the app icon. but interactive and glassy. im trying to recreate everything in css but its not looking as smooth and polished as real liquid glass does so ye. im kinda getting close though! I also added a navbar item that just is the link to actually open timetable, and when you hover it shows options to either open the app in testflight or open the web version which just redirects to /login. and its background switches to black when you start scrolling, which will make more sense later. i haven’t really planned the rest of the landing page, and i might remove this entire component if i find a good liquid glass implementation i can use, especially with bouncy animations etc. but yeah. (worst part is i might even just go change the entire app icon in a week so that kinda wastes all this time 😭😭😭)
After much trying to make glass, yet again, i failed. So now im just using blur and these edge effects, and i think it looks nice! theres even a hover eect, as shown in the second screenshot (class details show and the rectangle rotates a bit randomly)
I added a title to the lading site, but as you can see its not just any title. it uses this package called fitty to make the text size up to the full width of the page, and it does indeed look massive. and it also goes under the rectangles of the logo, so its like an apple depth effect you get on iphone lockscreens i found the website really laggy while scrolling somewhere while finishing of the main interactive icon, and i couldnt figure out why after removing everything that could have been gpu intensive (my gpu was spiking to 80% while just scrolling) so after all that my most likely theory is that the lag is just my computer and not the website (or both 😭😭) also when i made that main art, i made the border radii use px units, which made it look quite deformed on smaller screens, since the rectangle’s size is relative to screen width, whereas border radius is constant… so i went and fixed that too
I really wanted the first screen for timetable to look really really interesting and unique and instantly recognisable as Timetable, so i made the text instead of a boring white, it now has 3 really nice effects applied: A grain overlay, or noise, which in this case doesn’t make it look paper but looks nice nonetheless Its not flat white, its white at the top and goes to brown at the bottom, more noticeable when you close up. subtle but also nice The “white” isn’t even white. Its a particular white image i had a lot of difficulty in obtaining. it is the third screenshot, the “white” png. Its an .avif , and it uses some HDR-capable color space format something, which on compatible browsers make the timetable text show considerably brighter than everywhere else on your screen, which makes it really pop! i plan on using this effect in other places as well across the landing page to make it just pop a bit more. (the 4th image shows the white pixel showing as 1.25. anything above 1 is hdr.)
I did a few things in this devlog, got quite carried away frankly. So I migrated the codebase from Next.js to Tanstack. The reason was that i was seeing a lot of speed concerns, especially on the landing page. it was just lagging so much. i tried it on all my devices on all the browsers and it was there half the time. after a lot of commenting things out i just couldnt find a bug, so now i moved to tanstack. hopefully taht will remove at least some problems. in any case, i got bored of next.js and tanstack is a different framework to play with and make use of!! also, i continued the landing page by adding cards for each item. i don’t really like it right now, but i have established that i need to add these cards, if not in a different UI. The titles of each card are just image-masks, of Apple wallpapers! i went through some archive and picked out the ones i like, and applied a brightness 200% filter, and they look really nice now. after i finish the landing page im gonna work on rehauling the rest of the ui to be more intuitive and actually usable
ok so i think i have optimised it as much as i can lol tanstack clearly was a good idea, it just needed some optimisations!
Im making a 3d model of the school. this is so that i can show a whole literal map of the campus in the app, and then you can see where each user is, in 3d! i could even reexport it for the website, potentially its going to be interactive and everything
As well as migrating to Tanstack, I wanted even more speed, just for fun at this point honestly, so I decided to move to SolidJS from React. Its decently faster while looking similar to react, and it has some syntax stuff that i much prefer over react. this is basically just adding some margin for me to make bad code The end product looks identical so theres not much to show.. apart from the migration, I’ve also been designing the new landing page, which will also use the 3d model thing. the big question is figuring out how to make the 3d markers for each classroom register correctly, because i need to show a pin for each user at the right place, from swiftui, and somehow embed it into a realitykit 3d model. but im sure this use case has been done many times before so i can find something online!
Continuing the assorted improvements to the app: Fixed stacked drawers so nested drawer state updates reactively. Reworked the Friends page into shared List, ListSection, ListRow, and Card components. Preserved friend drag-and-drop ordering within the new layout. Improved timetable UX: i fixed the lesson selection in week view correctly aligned the “now” indicator in today view restricted timetable mode navigation to mobile through CSS, cos desktop already has the sidebar improved planner event styling. made the drawer compenent animate in and out, something i lost from the react -> solid migration I also added a reusable event-tag selection row with symbols and selected-state feedback.
Ships:
So I made a timetable app for my school, super-specialised and for ios, watchos, and macos. its got live activities and notifications to show you current and next subjects throughout the school day, widgets for your weekly schedule, ability to see your friends’ timetables, and server sync. and apple intelligence support!
This ship, I completely remade the app to work around accounts, and all the features that come with that I added a server, because it used to just store your timetable in your local storage and that was quite boring honestly creating a server for this has allowed me to add accounts, notifications, live activities, friends, shared events, multiple devices in the same account, and has made the website much easier to make (still in development, thats why the top devlogs are talking about the website not the app) The app now has all of this: Grades, track the score of all of your subjects notifications for each subject you have and your events etc live activity throughout each school day telling you your subjects etc sharing your location, subjects, and more with friends widgets that show your your subjects, upcoming events, and your friends’ schedules lots of administration options to manage pretty much everything, including who else is admin lol full support for siri, shortcuts, spotlight, and apple intelligence a full apple watch app btw i know 350 hours on a timetable app sounds insane (😭) but its because this project has 4 different aspects: swiftui client for iPhone, iPad, and mac swiftui client for apple watch a website client (still in development) the server that handles everything, and the database i promise it does more than just tell you your subjects 🙏...
|
1792878455.271768
|
1793742455.271768
|
|
54721
|
CLOCKKK IT🤏 by @mr_kn5196 | Stardance
|
mr_kn5196
|
0
|
12.64
|
0
|
[]
|
[{"post_id": 65347, "ts": "202 [{"post_id": 65347, "ts": "2026-09-10T13:09:10Z", "hours": 1.1797, "text": "added standoffs to hold the display in place. With this the project is finally complete(atleast i hope so:)"}, {"post_id": 63051, "ts": "2026-09-06T17:00:37Z", "hours": 0.7, "text": "Readme completed"}, {"post_id": 62967, "ts": "2026-09-06T15:14:44Z", "hours": 1.115, "text": "Added some silkscreen art to the pcb since the pcb is goin to be exposed in the clock"}, {"post_id": 62877, "ts": "2026-09-06T12:26:00Z", "hours": 1.3836, "text": "THE CASE IS COMPLETE!"}, {"post_id": 62785, "ts": "2026-09-06T09:33:18Z", "hours": 2.2842, "text": "Almost done with the case , im adding honeycomb desing to make it into honeybee theme."}, {"post_id": 62413, "ts": "2026-09-05T19:12:04Z", "hours": 2.0536, "text": "Almost done with the case ( only need to finish the heat sinks and the hole for usb) Design changes!!!: NO TOP PLATE the case will be empty on top so you can admire the pcb , hence i will add more silkscreen art, copper art on top of the pcb for this"}, {"post_id": 62243, "ts": "2026-09-05T14:49:18Z", "hours": 0.97, "text": "trying to make a case for my blare clock learning how to use fusion im getting better now but still i have a LOT to learn"}, {"post_id": 57153, "ts": "2026-08-29T08:13:51Z", "hours": 0.4172, "text": "Me trying to make a case in cad:("}, {"post_id": 56564, "ts": "2026-08-28T11:25:48Z", "hours": 0.35, "text": "made a few changes"}, {"post_id": 55536, "ts": "2026-08-27T13:28:54Z", "hours": 1.5336, "text": "DONE WITH THE PCBBBB"}, {"post_id": 55194, "ts": "2026-08-26T18:26:58Z", "hours": 0.65, "text": "designed the schematic"}]...
|
Title: CLOCKKK IT🤏 by @mr_kn5196 | Stardance
Devl Title: CLOCKKK IT🤏 by @mr_kn5196 | Stardance
Devlogs:
designed the schematic
DONE WITH THE PCBBBB
made a few changes
Me trying to make a case in cad:(
trying to make a case for my blare clock learning how to use fusion im getting better now but still i have a LOT to learn
Almost done with the case ( only need to finish the heat sinks and the hole for usb) Design changes!!!: NO TOP PLATE the case will be empty on top so you can admire the pcb , hence i will add more silkscreen art, copper art on top of the pcb for this
Almost done with the case , im adding honeycomb desing to make it into honeybee theme.
THE CASE IS COMPLETE!
Added some silkscreen art to the pcb since the pcb is goin to be exposed in the clock
Readme completed
added standoffs to hold the display in place. With this the project is finally complete(atleast i hope so:)...
|
1792802962.9640484
|
1793407762.9640484
|
|
41028
|
Krip-pad by @kripusek | Stardance
|
kripusek
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:14:52Z", "hours": 1.0, "multiplier": 5.0, "payout": 2, "blessing": "neutral", "text": "I made the macro pad, since the official parts haven’t arrived yet I used some that were laying around my house.", "repo": "https://github.com/kripusek/krip-pad", "demo": ""}]...
|
[{"post_id": 65349, "ts": "202 [{"post_id": 65349, "ts": "2026-09-10T13:11:46Z", "hours": 0.8217, "text": "The keyboard works"}, {"post_id": 37940, "ts": "2026-07-30T23:37:39Z", "hours": 1.4117, "text": "I have coded and programmed the firmware :D I have also compiled it"}, {"post_id": 37123, "ts": "2026-07-29T16:40:40Z", "hours": 1.4, "text": "I have made a plate a case and a closing thingy for the macro pad."}, {"post_id": 36565, "ts": "2026-07-28T19:24:02Z", "hours": 0.2667, "text": "Finishing the pcb that took 2 hours to make but the timelaps thingy didn’t capture it for some reason. Tomorrow I’ll make a 3d case for the keyboard in fusion autodesk."}]...
|
Title: Krip-pad by @kripusek | Stardance
Devlogs: Title: Krip-pad by @kripusek | Stardance
Devlogs:
Finishing the pcb that took 2 hours to make but the timelaps thingy didn’t capture it for some reason. Tomorrow I’ll make a 3d case for the keyboard in fusion autodesk.
I have made a plate a case and a closing thingy for the macro pad.
I have coded and programmed the firmware :D I have also compiled it
The keyboard works
Ships:
I made the macro pad, since the official parts haven’t arrived yet I used some that were laying around my house....
|
1793530203.0076962
|
1793616603.0076962
|
|
58600
|
Athenaeum by @adityajain1225 | Stardance
|
adityajain1225
|
0
|
4.65
|
0
|
[]
|
[{"post_id": 65350, "ts": "202 [{"post_id": 65350, "ts": "2026-09-10T13:13:16Z", "hours": 0.5333, "text": "I fixed the main error of USB C J1 facing into the circuit fixed it by rerouting and making it face outwards so its easy to charge"}, {"post_id": 64882, "ts": "2026-09-09T16:15:58Z", "hours": 1.1, "text": "I have completed wiring the PCB and checked the DRC for any error and this is how the PCB will look like this is mainly also how the E Reader will look like as I am looking for the raw electronic look it makes in my opuion look quite cool hence no case design is intended for any case/protection though not needed could be replaced with a simple plastic sleeve :) Hope this projects get funded and Ill be able to make this IRL :) A few bugs are there which will be fixed tomorrow :)"}, {"post_id": 64780, "ts": "2026-09-09T13:08:24Z", "hours": 0.3856, "text": "I have stared working on my PCB including tracing points fbetween the components"}, {"post_id": 64254, "ts": "2026-09-08T14:59:55Z", "hours": 0.6167, "text": "I have started to work on the main PCB of this project including arrangement of emements and tracing the wires"}, {"post_id": 64220, "ts": "2026-09-08T13:54:33Z", "hours": 0.8833, "text": "I have completed the schematics officially like including the Micro SD card parts as well as the menu and next page control buttons :)"}, {"post_id": 63540, "ts": "2026-09-07T13:46:03Z", "hours": 0.3, "text": "I continued working on schenmatics daily labelling and started connecting the display connectors as well as doing bug fix and debugging"}, {"post_id": 62678, "ts": "2026-09-06T05:10:10Z", "hours": 0.5333, "text": "I continued working on the schematics for example adding the batteries module the led charge indicator light as well as the usb c wired charge import point where we can plug in wire to charge the battery, here I paused as KiCad had some errors with the GND attachments"}, {"post_id": 62255, "ts": "2026-09-05T15:12:57Z", "hours": 0.3, "text": "I started schematics to make this project to help readers"}]...
|
Title: Athenaeum by @adityajain1225 | Stardance
D Title: Athenaeum by @adityajain1225 | Stardance
Devlogs:
I started schematics to make this project to help readers
I continued working on the schematics for example adding the batteries module the led charge indicator light as well as the usb c wired charge import point where we can plug in wire to charge the battery, here I paused as KiCad had some errors with the GND attachments
I continued working on schenmatics daily labelling and started connecting the display connectors as well as doing bug fix and debugging
I have completed the schematics officially like including the Micro SD card parts as well as the menu and next page control buttons :)
I have started to work on the main PCB of this project including arrangement of emements and tracing the wires
I have stared working on my PCB including tracing points fbetween the components
I have completed wiring the PCB and checked the DRC for any error and this is how the PCB will look like this is mainly also how the E Reader will look like as I am looking for the raw electronic look it makes in my opuion look quite cool hence no case design is intended for any case/protection though not needed could be replaced with a simple plastic sleeve :) Hope this projects get funded and Ill be able to make this IRL :) A few bugs are there which will be fixed tomorrow :)
I fixed the main error of USB C J1 facing into the circuit fixed it by rerouting and making it face outwards so its easy to charge...
|
1793501509.8522456
|
1794106309.8522456
|
|
53980
|
Welcome to my Butterfly Garden by @RajaveeModi | S Welcome to my Butterfly Garden by @RajaveeModi | Stardance...
|
RajaveeModi
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T13:40:18Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site which tells you all about me. The most challenging part was to fix something I didn’t know about at all. I am proud of myself because this is my first personal site. To know about me, click “Enter the garden”. Thank you!!!", "repo": "https://github.com/rajavee7/Welcome-to-my-Butterfly-Garden", "demo": "https://rajavee7.github.io/Welcome-to-my-Butterfly-Garden/"}]...
|
[{"post_id": 65361, "ts": "202 [{"post_id": 65361, "ts": "2026-09-10T13:28:47Z", "hours": 6.0208, "text": "Done with my personal site!!!!! ✨✨🌟🌟"}]...
|
Title: Welcome to my Butterfly Garden by @RajaveeM Title: Welcome to my Butterfly Garden by @RajaveeModi | Stardance
Devlogs:
Done with my personal site!!!!! ✨✨🌟🌟
Ships:
I made a personal site which tells you all about me. The most challenging part was to fix something I didn’t know about at all. I am proud of myself because this is my first personal site. To know about me, click “Enter the garden”. Thank you!!!...
|
1793497781.6958919
|
1793584181.6958919
|
|
37669
|
STELLA by @Loibo_2 | Stardance
|
Loibo_2
|
0
|
249.54
|
0
|
[]
|
[{"post_id": 65363, "ts": "202 [{"post_id": 65363, "ts": "2026-09-10T13:33:28Z", "hours": 10.0181, "text": "New Devlog :D It’s finally almost done… a working orbit system. I had sooo many problems with the different velocities, coordinates, and a lot of other things. But now it’s finally starting to look like something. Of course, it’s not perfect right now and still needs some adjustments, but the basic principle is done. For the next devlog, I’ll try to polish it and fully complete the system. I also want to give it a better look with some custom graphics and add a few more orbit lines without making it too laggy. Hope you like it :)"}, {"post_id": 63453, "ts": "2026-09-07T09:54:44Z", "hours": 9.6464, "text": "New Devlog :D I’m finally getting somewhere! After a lot of fixing and debugging, I now have an orbit line system that doesn’t behave weirdly when the time is set to a high value. I can now also project escape trajectories, elliptical orbits, and more. The next few things I want to work on are SOIs and collisions with them, as well as some other things like multiple planets, moons, and more rockets. Hope you like it"}, {"post_id": 60120, "ts": "2026-09-02T09:05:23Z", "hours": 9.8636, "text": "Sadly, I didn’t get much done this time :/ I did sooo much debugging on the physics system, but nothing was really working. I had so many issues with acceleration, different systems using different values, and multiple problems with ground detection. So I started all over again… Right now, I’ve removed all the physics and ground collision parts from the code, and I’ll try again. This time, I want to use one variable for each value and build an improved and more realistic engine instead of just guessing values and parameters. I also drew a few new parts. Hope you like it (:"}, {"post_id": 58390, "ts": "2026-08-30T19:57:55Z", "hours": 10.3636, "text": "New Devlog :D OMG I did it. The orbit line rendering is finally done, and it took sooo much debbugging. I spend most of the time converting the map coordinates to the planet coordinates, that are used in the physics system. I also had soo many small issues, like missing minus signs or just bad or old weird code that was causing problems. But now it is mostly working. The only think that still needs fixing is the transistion when going above 120km in altitude. Once that and a few other small things are fixed, most of the physics stuff should be finisched. I also got the time warp working in the planet view so that isn´t a problem anymore. The current max is x10 below 120km and x100 below 600km. Hope you like it :)"}, {"post_id": 57249, "ts": "2026-08-29T11:11:52Z", "hours": 9.9744, "text": "New Devlog :D The first thing I did was to remove the orbit line system. I noticed that it was full of bugs, and the different x, y, vx and vy values in the map, the game and depending on whether the rocket was in the planet´s orthe sun´s sphere of influence were becoming to complicated. SO i scrapped thewhole system. Then i stated over by deleting everything related too physics from the maps code and moving it into the games physics code. After that, I divided the pysics system into muliple sections: physics on the ground, in the air, in an orbit around the planet and in an orbit aroun the sun. By doing this, I can get better results for each part of the game and make the system easier to manage. I also added a new function, and now the rocket accelerates whn pressing W. For the next devlog, I´ll try to get at least some parts of the orbit system working so I can move on to another part of the game. Hope you like it"}, {"post_id": 56501, "ts": "2026-08-28T09:25:19Z", "hours": 7.7267, "text": "New Devlog :D Spend most of the time working on the new system to show the orbital lines. The first step was to add a Sphere of Influence (SOI), so the rocket isn´t pulled constantly by two or more bodies at the same time. Next I somehow got the pysics to work so that the orbit line stops when it would enter a SOI. It´s very buggy right now, though. The white orbit is sometimes glitching, and after entering the SOI the rocket just gets teleportet to the ground. Also addet two markers to show the Apogee and the Periapsis. I will keep working on it, because this is such an importent feature. Hope you like it"}, {"post_id": 55217, "ts": "2026-08-26T20:02:34Z", "hours": 10.275, "text": "New Devlog :D Puhhh, another big one. Most of the time, I spent trying to somehow turn the flat map of the game into a sphere. This took sooooo long, and it still isn’t quite right. I don’t know why, but the terrain isn’t fully the same. Also, the rocket is now a dot on the map that shows its coordinates. It also has a simple orbit line and can be centered. The planet now has the correct dimensions and radius, based on the other values. A big problem I had was that the 32-bit values were too small for the scale at which the pixels were being rendered. Hope you like it :)"}, {"post_id": 54441, "ts": "2026-08-25T13:45:19Z", "hours": 10.17, "text": "New Devlog :D Addet soooo much new stuff. Some features were really big, and I didn´t have the motivation to finish them completely, so a few thinks are a bit buggy right now. New stuff: Biggest point: Fixed the physics system. Before the fix, all rockets were just spinning around when sitting on a slope. They also glitched into the gorund or just fell in infinitly. Now both probles are fixed. The first one by using a point system to determie if the rocket is on a slope and should slide, as well as a lever arm that uses the mass to rotate the craft. For the second problem, I introduced a new outline system that now uses a convex hull. The only problem is that parts like the engine aren´t drawn accurately. Sooo thats one think i need to fix. New 0x time warp to stop the whole think and get a closer look. The planet now has its actural terrain height when viewed p close, instead of just beeing a cricle. It is terrabil right now and only a fist try. A new marker to show, where the rocket is on the map. Thinks to do next: Fix the convex hull New system for when the planet is viewed up close in the map view Fix everything in the map view around the planet Hope you like it :)"}, {"post_id": 53620, "ts": "2026-08-24T08:34:16Z", "hours": 9.035, "text": "New Devlog :D I´m not completely done with the terrain system, but i´m gonna stop working on it for now. It looks okay, until you zoom out to far and I´m not really making any progress anymore. Right now, it uses a simplex Noise with some other noise types in layers on top, aswell as some plateu logic and corosion. Also a biome system, that is in a okay shape right now, wich gives each section a unique color. Next i will focus more on thinks like physic, propulsion and the map. Hope you like it :)"}, {"post_id": 52897, "ts": "2026-08-23T08:55:01Z", "hours": 9.7747, "text": "New Devlog :D Did sooooo much work on the terrain system… For the most part , I looked online for some code snippets and tried to get them working with javascript. In the previous devlog, I showed the different colors for the biome system. I build around that, so each biome has it´s different amount of octaves, roughness and amplitude. Roughness in this case just says how smooth the different Simplex noise points should be between each other. This worked fine until you zoomed out. Especially in mointain areas, the waves from the sin and cos funtions were noticeable. So i tried a few things… Using a warp funtion to stretch high waves Terracing points, which wee a complety failure Stacking more functions on top of each other But everyting had its ownsides and nothing worekd fine… While trying those things, I wrote somecode that now lts you zoom out as far as you want by removing more and more lines so it doesn´t get laggy. Right now it looks terrible, but i have a final idea. For evey point above a given threshold, I´m gonna randomly choose two points and randomly flatten everything bewteen them. If you have any ideas how to get better terrain, please write it down in the comments. Hope you like it :)"}, {"post_id": 51582, "ts": "2026-08-21T11:03:54Z", "hours": 7.5636, "text": "Devlog time :D Last time, I showed a terrain geration system where the main factor was different biomes that were more or less hardcoded. - I scrubbed all of that and startet over. The new system is based on a simplex/perlin noise with a 8 layers of octaves. This took so long and i still don´t fully understand the code i put together using different websites. The noise generates random height nosies that are a few pixels apart and the rest is calculatet in between. next I added the biome overlay. Right now it´s just a prototype, but it uses the same noise technique with the pixels spaced further apart and gives each sector a random color. The problem right now is that everything is roughly the same height and the biomes are way to small and with way to clean fades between them. I will keep working on the terrain sytsem. Hope you like it :)"}, {"post_id": 50470, "ts": "2026-08-19T17:11:57Z", "hours": 7.0219, "text": "New Develog I never thought that terrain generation would be that hard Dx. I tried to generate the map pixel by pixel using a custom seed and many differt parameters. For now, I got a simple biome system working, but it still doesn´t looks quiet right. The biomes are stored in an array with a few parameters like height, roughness and the chances of craters, etc. This workes kinda okay, but the normal tarrein is not in a good shape right now. I will try to work on that and get a more realistic landscape. Also, I want to make a better system to randomly place craters, rocks and other stuff. Hope you like it :)"}, {"post_id": 49878, "ts": "2026-08-18T20:34:22Z", "hours": 9.3578, "text": "New Devlog :D First of all, this took bit longer because I had to switch on my androit tablet… I got visual studio code running bey installing termux and running it via an ubuntu extension. Worked a lot on the physics system. It now has collision and uses the exact same code for calculating the planet height. The rocket can´t go blow the ground height. It´s not perfect but okay. Some problems are still present, especially with falling over and beeing to slippery. Still good progress. Hope you like it :)"}, {"post_id": 48171, "ts": "2026-08-16T13:49:56Z", "hours": 8.9831, "text": "Devlog time :D It´s not completly done but her is the first version of the pyhsics part. Right now there is no atmosphere or a solid ground, but it is something and it took way to long, especially calculating some of the turning math. The craft is turned with ‘E’ and ‘Q’ and turns around the command pod wich is the onle part that can turn right now. And I still haven´t fixed the build menu. I also noticed that the parts placed in the ame now look off and I don´t know why. Hope you like it :)"}, {"post_id": 47440, "ts": "2026-08-15T11:28:06Z", "hours": 7.8667, "text": "Devlog time :D Worked on a lot of thinks: The new timewarp system. It is not completly done and 1x is not the real time right now. You can now click and still follow the same object while beeing in the map view. Improved the orbit lines. (not as wobbly as before) Tried to fix the build menu… and failed. It´s now worse then before urgh. For the next devlog the menu issues will hopefully be fixed. Hope you like it :)"}, {"post_id": 46269, "ts": "2026-08-13T12:07:46Z", "hours": 8.9306, "text": "New develog :D Worked a lot on the map viewof my space game. Features addet: Improved the view of the planet and the sun. In this example, I used the proportions of the sun and mars. Addet a button to switch the currect object the camera ist locked onto. Addet a line that shows the orbit of each object, but it´s not finished yet.. the closer you are, the more wobbly it get´s. Changed the color of the locked objct. Hope you like it :)"}, {"post_id": 44567, "ts": "2026-08-10T12:33:20Z", "hours": 7.9642, "text": "Devlog time :D Worked on the map menu. It does not look like much but the smaller circle is in an orbit around the big one. Not in the right scale and far from beeing realstic, but i´m getting there. Hope i can finish it soon :)"}, {"post_id": 43339, "ts": "2026-08-08T15:17:11Z", "hours": 3.4517, "text": "Small devlog :D Added the rocket to the actual game. No physics or collision yet, but that will be my next task. Also addet weight to every part. The yellow rect is the center of mass. Hope you like it :)"}, {"post_id": 42933, "ts": "2026-08-07T22:24:58Z", "hours": 6.4756, "text": "New Devlog :D Right now it doesn´t look like much, but this is the technique I´m going to use to rander planets. The idea is that if you´re close enough, every planet or moon looks flat on the surface. So instead of rendering a full sqhere, i´m using an finite strip with a thousends of pixels. Each pixel gets his height trough a seed, so it should look the exact same everytime. This way, I dont have to bend pixels and can stay with the pixelized look. Hope you like it :)"}, {"post_id": 42511, "ts": "2026-08-07T09:40:03Z", "hours": 7.2953, "text": "New devlog :) It´s not much to look at, but got a lot of thinks working: added a new file structure to change the sceen to other modes like the main menu createt 7 new files for all the different modes and structure and state files hours of debugging… those canva lines are not easy That´s all for now, hope you like it :)"}, {"post_id": 41840, "ts": "2026-08-06T09:32:24Z", "hours": 7.3692, "text": "Finished a major part of the building system: you can now select and drag parts or entire structures. I had some trouble figuring out how to store each part so I could identify all parts below it. Also fixed: the rendering of the build menu some big array structures Hope you like it :)"}, {"post_id": 41236, "ts": "2026-08-05T09:52:06Z", "hours": 4.1428, "text": "Omg i did it… took way to much work and isn´t 100% done, but now it´s just fixing some points and remaking some texures :) Next things to do are: Fix the engines More Parts and inner tanks Smaller Tanks and parts Part moving system"}, {"post_id": 40718, "ts": "2026-08-04T13:09:12Z", "hours": 9.6061, "text": "Sadly didn´t get much done :/ I had way to much debugging and couldn´t really find teh errors. But I will trying to fix it :) The Idea is to have large empty structual components where you can deside what to put into them. right now there are only two types of tanks (oxigen and liquid propellant) but more will come, like hydrogen, helium and other stuff like batteries or life support system."}, {"post_id": 39436, "ts": "2026-08-02T12:00:33Z", "hours": 6.3542, "text": "Lots of small technical things fixed. New detection System for different parts and a new mode for building tanks. Also some new textures, because 58 is not divisible by 4… Next update probabyl gonna be big :)"}, {"post_id": 38703, "ts": "2026-08-01T07:30:37Z", "hours": 7.7958, "text": "Did some progress on the menu and added some new parts :) Also a lot of debugging…"}, {"post_id": 38131, "ts": "2026-07-31T10:59:29Z", "hours": 7.4672, "text": "Finished the overlap system today and also a few new parts. :)"}, {"post_id": 37582, "ts": "2026-07-30T12:36:09Z", "hours": 8.8811, "text": "Sooooo, new update :D I did a lot of work on the system for how parts are stored and the overlap detection. I also worked on detecting, when two different rockets are connectet (though that part isn´t finished yet). This took and still will tage a lot of work. Dx In the video, you can see the new detection system. It uses points stored in a array to draw a “hitbox” around each object. The last thing I improved was how teh parts are rendered on screen. I´m now useing a function that efficently calculates the correct coordinates. Next, I´ll try to further improve the code, remove as many unnecessary lines as possible, and finally design some new txtuers and parts. Hope you like it :)"}, {"post_id": 36583, "ts": "2026-07-28T19:56:10Z", "hours": 6.9833, "text": "Puhhh finally did it. Took a lot of time, but here it the working Snap System :)"}, {"post_id": 35965, "ts": "2026-07-27T19:09:10Z", "hours": 9.8314, "text": "In the last 9 hours, I made some really good progress on the building system of my space game. A big part of the work was figuring out how to properly store all the data of the individual pieces in arrays, and how to link them together so they can form larger structures. This turned out to be more challenging than expected, especially when trying to keep everything flexible and organized. I also spent some time improving the overall logic behind placimg parts, so it feels more consistent. There’s still a lot to do, but the core system is starting to come together now. Next, I’m planning to finish the building system by adding more features, including a snap-in-place system to make building smoother and more intuitive. I’ll also start working on visuals soon, since everything is still pretty basic at the moment. Hope you enjoy it :)"}, {"post_id": 33633, "ts": "2026-07-23T18:25:19Z", "hours": 9.3525, "text": "I’m working on my first project in JavaScript. It’s going to be a small space simulator. I didn’t get much done in the first 10 hours, but so far I’ve created a build menu where you can choose, scroll, and select parts (though there are no images yet). That’s it for now, but more will come, and the graphics are far from finished :)"}]...
|
Title: STELLA by @Loibo_2 | Stardance
Devlogs:
I’ Title: STELLA by @Loibo_2 | Stardance
Devlogs:
I’m working on my first project in JavaScript. It’s going to be a small space simulator. I didn’t get much done in the first 10 hours, but so far I’ve created a build menu where you can choose, scroll, and select parts (though there are no images yet). That’s it for now, but more will come, and the graphics are far from finished :)
In the last 9 hours, I made some really good progress on the building system of my space game. A big part of the work was figuring out how to properly store all the data of the individual pieces in arrays, and how to link them together so they can form larger structures. This turned out to be more challenging than expected, especially when trying to keep everything flexible and organized. I also spent some time improving the overall logic behind placimg parts, so it feels more consistent. There’s still a lot to do, but the core system is starting to come together now. Next, I’m planning to finish the building system by adding more features, including a snap-in-place system to make building smoother and more intuitive. I’ll also start working on visuals soon, since everything is still pretty basic at the moment. Hope you enjoy it :)
Puhhh finally did it. Took a lot of time, but here it the working Snap System :)
Sooooo, new update :D I did a lot of work on the system for how parts are stored and the overlap detection. I also worked on detecting, when two different rockets are connectet (though that part isn´t finished yet). This took and still will tage a lot of work. Dx In the video, you can see the new detection system. It uses points stored in a array to draw a “hitbox” around each object. The last thing I improved was how teh parts are rendered on screen. I´m now useing a function that efficently calculates the correct coordinates. Next, I´ll try to further improve the code, remove as many unnecessary lines as possible, and finally design some new txtuers and parts. Hope you like it :)
Finished the overlap system today and also a few new parts. :)
Did some progress on the menu and added some new parts :) Also a lot of debugging…
Lots of small technical things fixed. New detection System for different parts and a new mode for building tanks. Also some new textures, because 58 is not divisible by 4… Next update probabyl gonna be big :)
Sadly didn´t get much done :/ I had way to much debugging and couldn´t really find teh errors. But I will trying to fix it :) The Idea is to have large empty structual components where you can deside what to put into them. right now there are only two types of tanks (oxigen and liquid propellant) but more will come, like hydrogen, helium and other stuff like batteries or life support system.
Omg i did it… took way to much work and isn´t 100% done, but now it´s just fixing some points and remaking some texures :) Next things to do are: Fix the engines More Parts and inner tanks Smaller Tanks and parts Part moving system
Finished a major part of the building system: you can now select and drag parts or entire structures. I had some trouble figuring out how to store each part so I could identify all parts below it. Also fixed: the rendering of the build menu some big array structures Hope you like it :)
New devlog :) It´s not much to look at, but got a lot of thinks working: added a new file structure to change the sceen to other modes like the main menu createt 7 new files for all the different modes and structure and state files hours of debugging… those canva lines are not easy That´s all for now, hope you like it :)
New Devlog :D Right now it doesn´t look like much, but this is the technique I´m going to use to rander planets. The idea is that if you´re close enough, every planet or moon looks flat on the surface. So instead of rendering a full sqhere, i´m using an finite strip with a thousends of pixels. Each pixel gets his height trough a seed, so it should look the exact same everytime. This way, I dont have to bend pixels and can stay with the pixelized look. Hope you like it :)
Small devlog :D Added the rocket to the actual game. No physics or collision yet, but that will be my next task. Also addet weight to every part. The yellow rect is the center of mass. Hope you like it :)
Devlog time :D Worked on the map menu. It does not look like much but the smaller circle is in an orbit around the big one. Not in the right scale and far from beeing realstic, but i´m getting there. Hope i can finish it soon :)
New develog :D Worked a lot on the map viewof my space game. Features addet: Improved the view of the planet and the sun. In this example, I used the proportions of the sun and mars. Addet a button to switch the currect object the camera ist locked onto. Addet a line that shows the orbit of each object, but it´s not finished yet.. the closer you are, the more wobbly it get´s. Changed the color of the locked objct. Hope you like it :)
Devlog time :D Worked on a lot of thinks: The new timewarp system. It is not completly done and 1x is not the real time right now. You can now click and still follow the same object while beeing in the map view. Improved the orbit lines. (not as wobbly as before) Tried to fix the build menu… and failed. It´s now worse then before urgh. For the next devlog the menu issues will hopefully be fixed. Hope you like it :)
Devlog time :D It´s not completly done but her is the first version of the pyhsics part. Right now there is no atmosphere or a solid ground, but it is something and it took way to long, especially calculating some of the turning math. The craft is turned with ‘E’ and ‘Q’ and turns around the command pod wich is the onle part that can turn right now. And I still haven´t fixed the build menu. I also noticed that the parts placed in the ame now look off and I don´t know why. Hope you like it :)
New Devlog :D First of all, this took bit longer because I had to switch on my androit tablet… I got visual studio code running bey installing termux and running it via an ubuntu extension. Worked a lot on the physics system. It now has collision and uses the exact same code for calculating the planet height. The rocket can´t go blow the ground height. It´s not perfect but okay. Some problems are still present, especially with falling over and beeing to slippery. Still good progress. Hope you like it :)
New Develog I never thought that terrain generation would be that hard Dx. I tried to generate the map pixel by pixel using a custom seed and many differt parameters. For now, I got a simple biome system working, but it still doesn´t looks quiet right. The biomes are stored in an array with a few parameters like height, roughness and the chances of craters, etc. This workes kinda okay, but the normal tarrein is not in a good shape right now. I will try to work on that and get a more realistic landscape. Also, I want to make a better system to randomly place craters, rocks and other stuff. Hope you like it :)
Devlog time :D Last time, I showed a terrain geration system where the main factor was different biomes that were more or less hardcoded. - I scrubbed all of that and startet over. The new system is based on a simplex/perlin noise with a 8 layers of octaves. This took so long and i still don´t fully understand the code i put together using different websites. The noise generates random height nosies that are a few pixels apart and the rest is calculatet in between. next I added the biome overlay. Right now it´s just a prototype, but it uses the same noise technique with the pixels spaced further apart and gives each sector a random color. The problem right now is that everything is roughly the same height and the biomes are way to small and with way to clean fades between them. I will keep working on the terrain sytsem. Hope you like it :)
New Devlog :D Did sooooo much work on the terrain system… For the most part , I looked online for some code snippets and tried to get them working with javascript. In the previous devlog, I showed the different colors for the biome system. I build around that, so each biome has it´s different amount of octaves, roughness and amplitude. Roughness in this case just says how smooth the different Simplex noise points should be between each other. This worked fine until you zoomed out. Especially in mointain areas, the waves from the sin and cos funtions were noticeable. So i tried a few things… Using a warp funtion to stretch high waves Terracing points, which wee a complety failure Stacking more functions on top of each other But everyting had its ownsides and nothing worekd fine… While trying those things, I wrote somecode that now lts you zoom out as far as you want by removing more and more lines so it doesn´t get laggy. Right now it looks terrible, but i have a final idea. For evey point above a given threshold, I´m gonna randomly choose two points and randomly flatten everything bewteen them. If you have any ideas how to get better terrain, please write it down in the comments. Hope you like it :)
New Devlog :D I´m not completely done with the terrain system, but i´m gonna stop working on it for now. It looks okay, until you zoom out to far and I´m not really making any progress anymore. Right now, it uses a simplex Noise with some other noise types in layers on top, aswell as some plateu logic and corosion. Also a biome system, that is in a okay shape right now, wich gives each section a unique color. Next i will focus more on thinks like physic, propulsion and the map. Hope you like it :)
New Devlog :D Addet soooo much new stuff. Some features were really big, and I didn´t have the motivation to finish them completely, so a few thinks are a bit buggy right now. New stuff: Biggest point: Fixed the physics system. Before the fix, all rockets were just spinning around when sitting on a slope. They also glitched into the gorund or just fell in infinitly. Now both probles are fixed. The first one by using a point system to determie if the rocket is on a slope and should slide, as well as a lever arm that uses the mass to rotate the craft. For the second problem, I introduced a new outline system that now uses a convex hull. The only problem is that parts like the engine aren´t drawn accurately. Sooo thats one think i need to fix. New 0x time warp to stop the whole think and get a closer look. The planet now has its actural terrain height when viewed p close, instead of just beeing a cricle. It is terrabil right now and only a fist try. A new marker to show, where the rocket is on the map. Thinks to do next: Fix the convex hull New system for when the planet is viewed up close in the map view Fix everything in the map view around the planet Hope you like it :)
New Devlog :D Puhhh, another big one. Most of the time, I spent trying to somehow turn the flat map of the game into a sphere. This took sooooo long, and it still isn’t quite right. I don’t know why, but the terrain isn’t fully the same. Also, the rocket is now a dot on the map that shows its coordinates. It also has a simple orbit line and can be centered. The planet now has the correct dimensions and radius, based on the other values. A big problem I had was that the 32-bit values were too small for the scale at which the pixels were being rendered. Hope you like it :)
New Devlog :D Spend most of the time working on the new system to show the orbital lines. The first step was to add a Sphere of Influence (SOI), so the rocket isn´t pulled constantly by two or more bodies at the same time. Next I somehow got the pysics to work so that the orbit line stops when it would enter a SOI. It´s very buggy right now, though. The white orbit is sometimes glitching, and after entering the SOI the rocket just gets teleportet to the ground. Also addet two markers to show the Apogee and the Periapsis. I will keep working on it, because this is such an importent feature. Hope you like it
New Devlog :D The first thing I did was to remove the orbit line system. I noticed that it was full of bugs, and the different x, y, vx and vy values in the map, the game and depending on whether the rocket was in the planet´s orthe sun´s sphere of influence were becoming to complicated. SO i scrapped thewhole system. Then i stated over by deleting everything related too physics from the maps code and moving it into the games physics code. After that, I divided the pysics system into muliple sections: physics on the ground, in the air, in an orbit around the planet and in an orbit aroun the sun. By doing this, I can get better results for each part of the game and make the system easier to manage. I also added a new function, and now the rocket accelerates whn pressing W. For the next devlog, I´ll try to get at least some parts of the orbit system working so I can move on to another part of the game. Hope you like it
New Devlog :D OMG I did it. The orbit line rendering is finally done, and it took sooo much debbugging. I spend most of the time converting the map coordinates to the planet coordinates, that are used in the physics system. I also had soo many small issues, like missing minus signs or just bad or old weird code that was causing problems. But now it is mostly working. The only think that still needs fixing is the transistion when going above 120km in altitude. Once that and a few other small things are fixed, most of the physics stuff should be finisched. I also got the time warp working in the planet view so that isn´t a problem anymore. The current max is x10 below 120km and x100 below 600km. Hope you like it :)
Sadly, I didn’t get much done this time :/ I did sooo much debugging on the physics system, but nothing was really working. I had so many issues with acceleration, different systems using different values, and multiple problems with ground detection. So I started all over again… Right now, I’ve removed all the physics and ground collision parts from the code, and I’ll try again. This time, I want to use one variable for each value and build an improved and more realistic engine instead of just guessing values and parameters. I also drew a few new parts. Hope you like it (:
New Devlog :D I’m finally getting somewhere! After a lot of fixing and debugging, I now have an orbit line system that doesn’t behave weirdly when the time is set to a high value. I can now also project escape trajectories, elliptical orbits, and more. The next few things I want to work on are SOIs and collisions with them, as well as some other things like multiple planets, moons, and more rockets. Hope you like it
New Devlog :D It’s finally almost done… a working orbit system. I had sooo many problems with the different velocities, coordinates, and a lot of other things. But now it’s finally starting to look like something. Of course, it’s not perfect right now and still needs some adjustments, but the basic principle is done. For the next devlog, I’ll try to polish it and fully complete the system. I also want to give it a better look with some custom graphics and add a few more orbit lines without making it too laggy. Hope you like it :)...
|
1792939751.7533903
|
1793803751.7533903
|
|
60480
|
FM radio by @_jacy | Stardance
|
_jacy
|
0
|
1.24
|
0
|
[]
|
[{"post_id": 65375, "ts": "202 [{"post_id": 65375, "ts": "2026-09-10T14:00:59Z", "hours": 0.4167, "text": "I designed a very simple case for the PCB. it has 2 holes at the top for 2 speakers, an audio jack hole on one side and a usbc hole (for the esp32) on the opposite side. Finally, on the bottom there are 2 holes for 2 2pin headers."}, {"post_id": 65137, "ts": "2026-09-10T02:11:05Z", "hours": 0.8247, "text": "I finished creating the schematic and PCB for the FM radio. The guide isnt complete so I just placed the items based on where I thought they should go. next, im going to design the case, then the firmware."}]...
|
Title: FM radio by @_jacy | Stardance
Devlogs:
I Title: FM radio by @_jacy | Stardance
Devlogs:
I finished creating the schematic and PCB for the FM radio. The guide isnt complete so I just placed the items based on where I thought they should go. next, im going to design the case, then the firmware.
I designed a very simple case for the PCB. it has 2 holes at the top for 2 speakers, an audio jack hole on one side and a usbc hole (for the esp32) on the opposite side. Finally, on the bottom there are 2 holes for 2 2pin headers....
|
1793033528.8162944
|
1793638328.8162944
|
|
58343
|
Liquid-Simulation by @Dasher280I | Stardance
|
Dasher280I
|
1
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T14:17:45Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project is an interactive 2D fluid simulation built with HTML5 and vanilla JavaScript. Users can interact with the canvas by clicking, dragging, or touching to paint dynamic, swirling ink patterns while background particles react to the underlying velocity fields. It features a sleek, expandable settings menu styled with CSS frosted-glass effects, allowing users to customize stroke width, dissipation duration, brightness, and color themes—such as cyan, purple, green, orange, pink, or white—in real time. Programmatically, the simulation is driven by a grid-based Navier-Stokes physics engine that handles diffusion, advection, and pressure projection, rendering efficient pixel data via an offscreen canvas. Cross-platform usability is supported through pointer events paired with CSS rules that prevent unwanted mobile scrolling and block unintended drawing when interacting with the sidebar controls. A key technical challenge addressed during development was preventing the mathematical simulation from breaking or destabilizing under extremely fast inputs or overlapping forces, which was solved by implementing conditional logic that evaluates and updates maximum density increments rather than allowing runaway value accumulation.", "repo": "https://github.com/Slasher22880011/liquid-simulator", "demo": "https://slasher22880011.github.io/liquid-simulator/"}]...
|
[{"post_id": 65376, "ts": "202 [{"post_id": 65376, "ts": "2026-09-10T14:03:15Z", "hours": 6.1764, "text": "The latest update to the fluid simulation introduces a fully interactive settings menu to give users real-time control over the visual output. A new toggle button opens a sliding sidebar menu. Inside this sidebar, a series of range sliders allows users to dynamically adjust the fluid’s stroke width, the duration before it dissipates, and its overall brightness. Furthermore, a dropdown menu was integrated to let users switch the fluid color between cyan, purple, green, orange, pink, and white."}, {"post_id": 64249, "ts": "2026-09-08T14:45:17Z", "hours": 5.3208, "text": "To eliminate the harsh pixelation caused by rendering low-resolution grid cells directly to the main display, the rendering pipeline was updated to use an offscreen canvas matching the exact simulation grid dimensions. Fluid density values are now written directly into an ImageData pixel buffer on this offscreen canvas. When drawing to the screen, the offscreen canvas is scaled up with high-quality bilinear interpolation enabled (imageSmoothingEnabled = true), seamlessly blending the pixel boundaries. This achieves a smooth, continuous fluid flow with soft gradients without impacting the performance of the underlying physics simulation."}, {"post_id": 63512, "ts": "2026-09-07T12:40:47Z", "hours": 5.8981, "text": "Things are starting to get interesting! I spent the last few hours adding a velocity vector field to the grid. Now, instead of just bleeding outward uniformly, the dye actually gets carried by the current. I had to wrap my head around advection, which took some debugging, but mapping the mouse movement to generate directional forces totally changed the feel. When you drag the cursor, it pushes the fluid around, creating these cool, swirling patterns. It’s still just grid-based colors, but it finally behaves like a real liquid. Can’t wait to drop actual particles into this current!"}, {"post_id": 63090, "ts": "2026-09-06T18:03:57Z", "hours": 6.3775, "text": "Just kicked off my new fluid simulation project for Stardance! Today, I got the absolute basics running. I set up the HTML canvas and built a 2D grid array to handle the underlying math. It’s pretty barebones right now—just clicking and dragging the mouse to inject some neon color into the cells. I implemented a simple diffusion algorithm, so the colors spread out to neighboring cells and slowly fade away over time. It looks a bit blocky because of the low resolution, but it’s super satisfying to see the arrays updating correctly. Next up: adding actual fluid movement!"}]...
|
Title: Liquid-Simulation by @Dasher280I | Stardanc Title: Liquid-Simulation by @Dasher280I | Stardance
Devlogs:
Just kicked off my new fluid simulation project for Stardance! Today, I got the absolute basics running. I set up the HTML canvas and built a 2D grid array to handle the underlying math. It’s pretty barebones right now—just clicking and dragging the mouse to inject some neon color into the cells. I implemented a simple diffusion algorithm, so the colors spread out to neighboring cells and slowly fade away over time. It looks a bit blocky because of the low resolution, but it’s super satisfying to see the arrays updating correctly. Next up: adding actual fluid movement!
Things are starting to get interesting! I spent the last few hours adding a velocity vector field to the grid. Now, instead of just bleeding outward uniformly, the dye actually gets carried by the current. I had to wrap my head around advection, which took some debugging, but mapping the mouse movement to generate directional forces totally changed the feel. When you drag the cursor, it pushes the fluid around, creating these cool, swirling patterns. It’s still just grid-based colors, but it finally behaves like a real liquid. Can’t wait to drop actual particles into this current!
To eliminate the harsh pixelation caused by rendering low-resolution grid cells directly to the main display, the rendering pipeline was updated to use an offscreen canvas matching the exact simulation grid dimensions. Fluid density values are now written directly into an ImageData pixel buffer on this offscreen canvas. When drawing to the screen, the offscreen canvas is scaled up with high-quality bilinear interpolation enabled (imageSmoothingEnabled = true), seamlessly blending the pixel boundaries. This achieves a smooth, continuous fluid flow with soft gradients without impacting the performance of the underlying physics simulation.
The latest update to the fluid simulation introduces a fully interactive settings menu to give users real-time control over the visual output. A new toggle button opens a sliding sidebar menu. Inside this sidebar, a series of range sliders allows users to dynamically adjust the fluid’s stroke width, the duration before it dissipates, and its overall brightness. Furthermore, a dropdown menu was integrated to let users switch the fluid color between cyan, purple, green, orange, pink, and white.
Ships:
This project is an interactive 2D fluid simulation built with HTML5 and vanilla JavaScript. Users can interact with the canvas by clicking, dragging, or touching to paint dynamic, swirling ink patterns while background particles react to the underlying velocity fields. It features a sleek, expandable settings menu styled with CSS frosted-glass effects, allowing users to customize stroke width, dissipation duration, brightness, and color themes—such as cyan, purple, green, orange, pink, or white—in real time. Programmatically, the simulation is driven by a grid-based Navier-Stokes physics engine that handles diffusion, advection, and pressure projection, rendering efficient pixel data via an offscreen canvas. Cross-platform usability is supported through pointer events paired with CSS rules that prevent unwanted mobile scrolling and block unintended drawing when interacting with the sidebar controls. A key technical challenge addressed during development was preventing the mathematical simulation from breaking or destabilizing under extremely fast inputs or overlapping forces, which was solved by implementing conditional logic that evaluates and updates maximum density increments rather than allowing runaway value accumulation....
|
1792875205.9936063
|
1793739205.9936063
|
|
50821
|
Emberfall by @janswca | Stardance
|
janswca
|
1
|
349.88
|
959
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T02:43:25Z", "hours": 101.0, "multiplier": 11.57, "payout": 959, "blessing": "neutral", "text": "emberfall is a game in a cave like dungeon where you have to find your way out and fight many enimies on the way", "repo": "https://github.com/janirusepa-design/emberfall", "demo": "https://janirusepa-design.github.io/emberfall/"}]...
|
[{"post_id": 65378, "ts": "202 [{"post_id": 65378, "ts": "2026-09-10T14:11:52Z", "hours": 12.3067, "text": "last playtests before shipping it soon, found some more inconsistencies and patched them, and the game is now mostly looking how i want it"}, {"post_id": 64792, "ts": "2026-09-09T13:35:57Z", "hours": 11.1, "text": "Noticed the sides of the screen were just permanently black, which is because the screen is twice as wide as it is tall, and the torch was a circle. Made the light an ellipse so it matches the screen shape. You now see about 14 tiles on either side of you instead of 7, and the top and bottom stay dark. Flaring fills the screen almost exactly, with the corners still falling off. Also made the torch something you can build up. There are four different upgrades now that extend it, so if you keep picking them, you finish the run seeing way more than you started with."}, {"post_id": 64516, "ts": "2026-09-08T23:48:34Z", "hours": 10.7667, "text": "worken on some new ablities and more, comming soon"}, {"post_id": 64182, "ts": "2026-09-08T12:28:17Z", "hours": 11.6667, "text": "Added elites enemy types this time, roughly one a room, with a ring around them so you can spot one coming and a guaranteed drop when it goes down."}, {"post_id": 63936, "ts": "2026-09-08T00:39:33Z", "hours": 10.3667, "text": "Most of the loot is still just numbers going up. 25 of the 29 affixes are a flat percentage, and only four of them do anything, so I want to turn a chunk of those into things with a verb in them, like your torch flaring on a kill or the first hit in a room always critting.After that, giving you a choice of two doors on the boss floors instead of the same 1 to 11 every single run."}, {"post_id": 63568, "ts": "2026-09-07T14:15:41Z", "hours": 8.5514, "text": "worked on some more minor improments so i can really get the best build out for the next ship"}, {"post_id": 63385, "ts": "2026-09-07T05:42:13Z", "hours": 10.4333, "text": "fixed the screen randomly going flat and bright, with no characters on it. Ashglass pickups were being made with a colour that doesn’t exist, which crashed the renderer mid-frame and killed all the lighting, and it looked random because ashglass only drops about one kill in twenty. Also, every floor generates differently instead of ten copies of the same dungeon in different colours, so the Cistern is flooded channels now and the Vault is six huge rooms. You can finally use abilities while flaring, since Shift turns the number row into a 1 to 5, which did nothing the whole time your torch was up. Toned the flare down; it used to light more than the whole screen. Plus the usual: stopped the hitching when you walk into new rooms, chest loot labels stack instead of piling on one spot, the Pyre was secretly two different affixes with the same name, and the help screen no longer lies about how many abilities you get."}, {"post_id": 62958, "ts": "2026-09-06T14:54:55Z", "hours": 13.2667, "text": "Still working right now, come back next devlog, havent finishet yet"}, {"post_id": 62555, "ts": "2026-09-06T00:25:54Z", "hours": 10.1333, "text": "It’s back. After the last batch of improvements, I played through again this morning, and the same glitch that happened a couple of days ago is back. Now, whenever I use my special abilities, the game goes grey, I can’t see my character or any enemies, and even though my attachments register, I can’t really play the game. But nevertheless i have fixed it again. Hopefully this time it stays fixed"}, {"post_id": 62226, "ts": "2026-09-05T14:16:47Z", "hours": 12.9, "text": "Did though playtests of the game and marked down some existing issues, and looked at ways to improve, optimised the code, and started ideating what new mechanics and features to add before shipping it again. In terms of shipping, I’ll probably end up shipping by the end of this week."}, {"post_id": 61849, "ts": "2026-09-04T23:42:12Z", "hours": 13.0667, "text": "worked on more minor things, especially the colours, they all look pretty much the same but I decided to make them more varied as you go throughout your run"}, {"post_id": 61412, "ts": "2026-09-04T09:52:39Z", "hours": 10.9333, "text": "Worked on improving the enemy encounter system. I found lots of glitches in it after making it for the first time. Sometimes, when you fough an enemny it woundnt update here and just many other problems but ive worked a lot the past 2 days working on fixing it and i think now it works, in my playtest, i havent found any more issues wth it. they update onto the list, maye in the future i could work on makeing this layout better i do think it it kind of lacking right now"}, {"post_id": 61160, "ts": "2026-09-03T22:56:03Z", "hours": 18.1333, "text": "worked on more minor things on the game"}, {"post_id": 60574, "ts": "2026-09-03T00:38:25Z", "hours": 10.3333, "text": "Just fixed a major glitch that caused this in the game, where you were stuck in this place and you just coudnt get out of it unless you resrated the game. likely due to the plethora of code changes I made. But this was"}, {"post_id": 60241, "ts": "2026-09-02T14:17:50Z", "hours": 5.1, "text": "Did it finally? Now the game saves to your browser cache. Now, as long as you keep playing in the same browser, you will not lose your progress, supposed to work though github as well but i havent tested that yet"}, {"post_id": 59980, "ts": "2026-09-02T02:04:30Z", "hours": 8.6333, "text": "SPOILERS ABOUT THE END OF THE GAME But i started thinking about what happens after you finsished all 11 floors and then i decided that you would be somone who got stranded on a lsland and fell into a cave and at the end you get the whole backstrory on what happend before the caves basicly you would go to a beacon that you set up and call for help, in not sure about the details just coded and make the draft of the story"}, {"post_id": 59448, "ts": "2026-09-01T09:37:30Z", "hours": 10.4333, "text": "Final floor looks like a whole ritual"}, {"post_id": 59264, "ts": "2026-08-31T23:11:16Z", "hours": 13.1333, "text": "Just finished the new upgrade system"}, {"post_id": 58755, "ts": "2026-08-31T10:00:51Z", "hours": 10.1, "text": "Worked on a list of enemies that you encounter, and as you progress, you will discover more and more. Also, worked on, and revamped the final floor to feel like a complete boss battle, which is more expansive and, for the first time, not as cramped have space to move around. Still to come a new and imporved upgrade system a first draft you can see in the ss here where you can stack up to 5 special abilities which you wil gain by section as you progress"}, {"post_id": 58503, "ts": "2026-08-30T22:45:09Z", "hours": 11.2667, "text": "Ok, the first batch of finished improvements is taking slightly longer than expected. I ran into quite a few issues while coding them, still troubleshooting"}, {"post_id": 58025, "ts": "2026-08-30T11:28:29Z", "hours": 4.4, "text": "Ok, im bout to begin incorporating the first batch of improvements, starting with the chaning the story"}, {"post_id": 57856, "ts": "2026-08-30T05:28:01Z", "hours": 12.5333, "text": "Fixed a bunch of stuff from the feedback, first make the tutorial larger and easier to read and understand, fixed sloppy and laggy mouse movement, increased the scaling, fixed the joystick and also reducsed screenshake when low on embers and getting damgaed added esc menu and a repo licenece also from your feedback im going to try being more detailed with my devlogs when i can. ill be ready to ship again soon, i going to try to find more way to imporve on top of this"}, {"post_id": 57381, "ts": "2026-08-29T14:47:16Z", "hours": 2.4256, "text": "Thanks for all the feedback im still working on incorporating all those changes and more in my game starting with a new and imporved better tutorial so o new players can understand all the controls of the game, how and when to use them"}, {"post_id": 57135, "ts": "2026-08-29T07:33:01Z", "hours": 6.9, "text": "Wored on some minor Improvents to the game"}, {"post_id": 53781, "ts": "2026-08-24T14:04:38Z", "hours": 7.6667, "text": "worked on some cool ememy designs"}, {"post_id": 53418, "ts": "2026-08-23T23:13:31Z", "hours": 10.2, "text": "Added on the totutorial and worked on imrpoving the game"}, {"post_id": 53038, "ts": "2026-08-23T13:01:04Z", "hours": 7.7281, "text": "Worked on adding a tutorial for new players"}, {"post_id": 52734, "ts": "2026-08-23T01:55:19Z", "hours": 19.2667, "text": "this game is almost finished, worked on a cool start screen"}, {"post_id": 52120, "ts": "2026-08-22T06:33:29Z", "hours": 16.6492, "text": "done a lot for the gameplay and mechanics of the game"}, {"post_id": 51665, "ts": "2026-08-21T13:52:37Z", "hours": 9.7667, "text": "Ok im very close to shipping this project, I’ve perfected the start screen, and now I just need to work on improving the gameplay, and then stabilizing and debugging the code"}, {"post_id": 51398, "ts": "2026-08-21T02:17:28Z", "hours": 9.1833, "text": "Made some good progress so far, but i think the code still needs work, and i keep runnning into errors about the game"}, {"post_id": 50862, "ts": "2026-08-20T09:45:14Z", "hours": 7.8786, "text": "I’ve gone pretty far but I’ve realized instead of making one big file for the game, I should just make a collection of files then an index.html file that runs off those ones, then much easier to run and to code"}, {"post_id": 50686, "ts": "2026-08-20T00:18:32Z", "hours": 12.4239, "text": "Just started working on my project put in about 12 hours at once"}, {"post_id": 50049, "ts": "2026-08-19T02:38:54Z", "hours": 0.6119, "text": "Just started working on a game its about being stuck in a cave and using a torch to find your way out and as you try to leave you have to face eminimies that try to attack you still in ideation"}]...
|
Title: Emberfall by @janswca | Stardance
Devlogs: Title: Emberfall by @janswca | Stardance
Devlogs:
Just started working on a game its about being stuck in a cave and using a torch to find your way out and as you try to leave you have to face eminimies that try to attack you still in ideation
Just started working on my project put in about 12 hours at once
I’ve gone pretty far but I’ve realized instead of making one big file for the game, I should just make a collection of files then an index.html file that runs off those ones, then much easier to run and to code
Made some good progress so far, but i think the code still needs work, and i keep runnning into errors about the game
Ok im very close to shipping this project, I’ve perfected the start screen, and now I just need to work on improving the gameplay, and then stabilizing and debugging the code
done a lot for the gameplay and mechanics of the game
this game is almost finished, worked on a cool start screen
Worked on adding a tutorial for new players
Added on the totutorial and worked on imrpoving the game
worked on some cool ememy designs
Wored on some minor Improvents to the game
Thanks for all the feedback im still working on incorporating all those changes and more in my game starting with a new and imporved better tutorial so o new players can understand all the controls of the game, how and when to use them
Fixed a bunch of stuff from the feedback, first make the tutorial larger and easier to read and understand, fixed sloppy and laggy mouse movement, increased the scaling, fixed the joystick and also reducsed screenshake when low on embers and getting damgaed added esc menu and a repo licenece also from your feedback im going to try being more detailed with my devlogs when i can. ill be ready to ship again soon, i going to try to find more way to imporve on top of this
Ok, im bout to begin incorporating the first batch of improvements, starting with the chaning the story
Ok, the first batch of finished improvements is taking slightly longer than expected. I ran into quite a few issues while coding them, still troubleshooting
Worked on a list of enemies that you encounter, and as you progress, you will discover more and more. Also, worked on, and revamped the final floor to feel like a complete boss battle, which is more expansive and, for the first time, not as cramped have space to move around. Still to come a new and imporved upgrade system a first draft you can see in the ss here where you can stack up to 5 special abilities which you wil gain by section as you progress
Just finished the new upgrade system
Final floor looks like a whole ritual
SPOILERS ABOUT THE END OF THE GAME But i started thinking about what happens after you finsished all 11 floors and then i decided that you would be somone who got stranded on a lsland and fell into a cave and at the end you get the whole backstrory on what happend before the caves basicly you would go to a beacon that you set up and call for help, in not sure about the details just coded and make the draft of the story
Did it finally? Now the game saves to your browser cache. Now, as long as you keep playing in the same browser, you will not lose your progress, supposed to work though github as well but i havent tested that yet
Just fixed a major glitch that caused this in the game, where you were stuck in this place and you just coudnt get out of it unless you resrated the game. likely due to the plethora of code changes I made. But this was
worked on more minor things on the game
Worked on improving the enemy encounter system. I found lots of glitches in it after making it for the first time. Sometimes, when you fough an enemny it woundnt update here and just many other problems but ive worked a lot the past 2 days working on fixing it and i think now it works, in my playtest, i havent found any more issues wth it. they update onto the list, maye in the future i could work on makeing this layout better i do think it it kind of lacking right now
worked on more minor things, especially the colours, they all look pretty much the same but I decided to make them more varied as you go throughout your run
Did though playtests of the game and marked down some existing issues, and looked at ways to improve, optimised the code, and started ideating what new mechanics and features to add before shipping it again. In terms of shipping, I’ll probably end up shipping by the end of this week.
It’s back. After the last batch of improvements, I played through again this morning, and the same glitch that happened a couple of days ago is back. Now, whenever I use my special abilities, the game goes grey, I can’t see my character or any enemies, and even though my attachments register, I can’t really play the game. But nevertheless i have fixed it again. Hopefully this time it stays fixed
Still working right now, come back next devlog, havent finishet yet
fixed the screen randomly going flat and bright, with no characters on it. Ashglass pickups were being made with a colour that doesn’t exist, which crashed the renderer mid-frame and killed all the lighting, and it looked random because ashglass only drops about one kill in twenty. Also, every floor generates differently instead of ten copies of the same dungeon in different colours, so the Cistern is flooded channels now and the Vault is six huge rooms. You can finally use abilities while flaring, since Shift turns the number row into a 1 to 5, which did nothing the whole time your torch was up. Toned the flare down; it used to light more than the whole screen. Plus the usual: stopped the hitching when you walk into new rooms, chest loot labels stack instead of piling on one spot, the Pyre was secretly two different affixes with the same name, and the help screen no longer lies about how many abilities you get.
worked on some more minor improments so i can really get the best build out for the next ship
Most of the loot is still just numbers going up. 25 of the 29 affixes are a flat percentage, and only four of them do anything, so I want to turn a chunk of those into things with a verb in them, like your torch flaring on a kill or the first hit in a room always critting.After that, giving you a choice of two doors on the boss floors instead of the same 1 to 11 every single run.
Added elites enemy types this time, roughly one a room, with a ring around them so you can spot one coming and a guaranteed drop when it goes down.
worken on some new ablities and more, comming soon
Noticed the sides of the screen were just permanently black, which is because the screen is twice as wide as it is tall, and the torch was a circle. Made the light an ellipse so it matches the screen shape. You now see about 14 tiles on either side of you instead of 7, and the top and bottom stay dark. Flaring fills the screen almost exactly, with the corners still falling off. Also made the torch something you can build up. There are four different upgrades now that extend it, so if you keep picking them, you finish the run seeing way more than you started with.
last playtests before shipping it soon, found some more inconsistencies and patched them, and the game is now mostly looking how i want it
Ships:
emberfall is a game in a cave like dungeon where you have to find your way out and fight many enimies on the way...
|
1792875220.036621
|
1793739220.036621
|
|
60660
|
Website by @UnknowGamer | Stardance
|
UnknowGamer
|
0
|
2.83
|
0
|
[]
|
[{"post_id": 65379, "ts": "202 [{"post_id": 65379, "ts": "2026-09-10T14:12:41Z", "hours": 2.8333, "text": "Nothung"}]...
|
Title: Website by @UnknowGamer | Stardance
Devlog Title: Website by @UnknowGamer | Stardance
Devlogs:
Nothung...
|
1793036939.477748
|
1793641739.477748
|
|
59371
|
Vaskos by @Vasil | Stardance
|
Vasil
|
0
|
2.22
|
0
|
[]
|
[{"post_id": 65382, "ts": "202 [{"post_id": 65382, "ts": "2026-09-10T14:15:05Z", "hours": 0.6339, "text": "Hi, I finished the layout today. I exported the BOM, CPL, and Gerber files to the repository. I only have two steps left to the finish—CAD and Firmware."}, {"post_id": 63604, "ts": "2026-09-07T15:09:56Z", "hours": 1.5842, "text": "Today I launched my 3-switch Cherry MX macropad project for Hack Club, powered by the Seeeduino XIAO ESP32-C3 microcontroller. I routed all the traces in KiCad across both layers, fixed the footprint pin mismatches, and aligned the mounting holes into a symmetric layout with rounded board edges. With zero unrouted nets and a clean DRC check, I’m now ready to add a ground plane and export the Gerber files."}]...
|
Title: Vaskos by @Vasil | Stardance
Devlogs:
Toda Title: Vaskos by @Vasil | Stardance
Devlogs:
Today I launched my 3-switch Cherry MX macropad project for Hack Club, powered by the Seeeduino XIAO ESP32-C3 microcontroller. I routed all the traces in KiCad across both layers, fixed the footprint pin mismatches, and aligned the mounting holes into a symmetric layout with rounded board edges. With zero unrouted nets and a clean DRC check, I’m now ready to add a ground plane and export the Gerber files.
Hi, I finished the layout today. I exported the BOM, CPL, and Gerber files to the repository. I only have two steps left to the finish—CAD and Firmware....
|
1793552077.008132
|
1794156877.008132
|
|
27889
|
My first slack bot! by @Baule | Stardance
|
Baule
|
2
|
9.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T01:08:02Z", "hours": 3.0, "multiplier": 1.72, "payout": 5, "blessing": "neutral", "text": "This is my second Ship for this project Changes : • I reworked the github command now it can post the github account info if you only @someone if he has linked its github to his slack •Added a new command to link your github with your Slack account to use the github command", "repo": "https://github.com/345235/Slackbot", "demo": "https://hackclub.slack.com/archives/C0BM1E8ATQT"}, {"ship_num": 2, "ts": "2026-07-28T23:55:50Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So i made a slackbot that respons 24/7 you can say /hackbot-github then the slackbot posts your user name into the chat its only visible to you. Then we have the slackbot-todo command were you can create a todo in the future i will add more big commands i have smaller ones like the ping and help command the help command is called simple-help In the picture are all commands", "repo": "https://github.com/345235/Slackbot", "demo": "https://hackclub.slack.com/archives/C0BM1E8ATQT"}]...
|
[{"post_id": 65388, "ts": "202 [{"post_id": 65388, "ts": "2026-09-10T14:27:00Z", "hours": 2.7858, "text": "i have made a new command the /hackbot-linkgithub command it links your github to your slack account. And i also updated the github command , now you only need to @someone to see his github but it only works with when the person you @ has linked his github to his slack account"}, {"post_id": 36537, "ts": "2026-07-28T18:36:47Z", "hours": 0.4667, "text": "I fixed the todo command"}, {"post_id": 36097, "ts": "2026-07-27T23:38:16Z", "hours": 0.4633, "text": "Devlog 5 I am really desperate since my code deletet it self through a bad github pull from me nothing works.The todo command if you doesnt write anything it gives you an massage that you didnt write anything but then it creates the todo anyway and the github command doesnt work anymore and the repo command works but then the app posts that it doesnt work every command worked befor but now it nothing works so if someone wants to help me please contac me and sorry that i complain so much but i am really angry that nothing works"}, {"post_id": 35800, "ts": "2026-07-27T13:52:36Z", "hours": 1.6619, "text": "Devloge 4 I am so close to finish the project I have made it run 24/7 and any other command is working except the github command it worked before but then i messd up and all my code was reseted to the simple hackbot ping command i worked the whole day to remake the commands but now it gives me on slacke everytime an error that the app doesnt respond but the ping command workes so if someone nows where the problem is the notify me"}, {"post_id": 31246, "ts": "2026-07-19T14:33:20Z", "hours": 0.8025, "text": "Devloge 3 I have now added a command that shows your github account"}, {"post_id": 29782, "ts": "2026-07-16T21:45:14Z", "hours": 1.3136, "text": "Devlog 2 I now will implement github add-ons so you could send direkt to some one your github account or track a projects repo"}, {"post_id": 28187, "ts": "2026-07-14T09:56:54Z", "hours": 0.8661, "text": "The basics of my bot are now ready now i will add more commands"}]...
|
Title: My first slack bot! by @Baule | Stardance
Title: My first slack bot! by @Baule | Stardance
Devlogs:
The basics of my bot are now ready now i will add more commands
Devlog 2 I now will implement github add-ons so you could send direkt to some one your github account or track a projects repo
Devloge 3 I have now added a command that shows your github account
Devloge 4 I am so close to finish the project I have made it run 24/7 and any other command is working except the github command it worked before but then i messd up and all my code was reseted to the simple hackbot ping command i worked the whole day to remake the commands but now it gives me on slacke everytime an error that the app doesnt respond but the ping command workes so if someone nows where the problem is the notify me
Devlog 5 I am really desperate since my code deletet it self through a bad github pull from me nothing works.The todo command if you doesnt write anything it gives you an massage that you didnt write anything but then it creates the todo anyway and the github command doesnt work anymore and the repo command works but then the app posts that it doesnt work every command worked befor but now it nothing works so if someone wants to help me please contac me and sorry that i complain so much but i am really angry that nothing works
I fixed the todo command
i have made a new command the /hackbot-linkgithub command it links your github to your slack account. And i also updated the github command , now you only need to @someone to see his github but it only works with when the person you @ has linked his github to his slack account
Ships:
So i made a slackbot that respons 24/7 you can say /hackbot-github then the slackbot posts your user name into the chat its only visible to you. Then we have the slackbot-todo command were you can create a todo in the future i will add more big commands i have smaller ones like the ping and help command the help command is called simple-help In the picture are all commands
This is my second Ship for this project Changes : • I reworked the github command now it can post the github account info if you only @someone if he has linked its github to his slack •Added a new command to link your github with your Slack account to use the github command...
|
1793508704.643243
|
1793595104.643243
|
|
57631
|
Personal Site - Eugene by @Euge | Stardance
|
Euge
|
0
|
0.9
|
0
|
[]
|
[{"post_id": 65391, "ts": "202 [{"post_id": 65391, "ts": "2026-09-10T14:35:23Z", "hours": 0.8972, "text": "Hello guys it is the #1 devlog of my personal site, have just written basic html structure with nav, footer and website contect. I also have planned to connect the design with project - SiteScope AI. And honestly it will look like a part of that project, but it hasnt to be… Thanks for reading, Eugene :)"}]...
|
Title: Personal Site - Eugene by @Euge | Stardance Title: Personal Site - Eugene by @Euge | Stardance
Devlogs:
Hello guys it is the #1 devlog of my personal site, have just written basic html structure with nav, footer and website contect. I also have planned to connect the design with project - SiteScope AI. And honestly it will look like a part of that project, but it hasnt to be… Thanks for reading, Eugene :)...
|
1793447657.8591208
|
1794052457.8591208
|
|
16179
|
Robotics RoboLens by @mira_j_maroni | Stardance
|
mira_j_maroni
|
2
|
140.27
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T22:22:22Z", "hours": 124.0, "multiplier": 16.83, "payout": 0, "blessing": "neutral", "text": "What did I make? Since Ship #1, RoboLens grew from one AI scanner into four connected tools. I added a rules checker that reads the actual FRC game manual (2024–2026) alongside your robot photo so it’s grounded in real rules instead of guessing. I built out a full shared battery tracker. I added a guided camera that walks you through lighting/tilt/framing and auto-captures once the angle looks right. And the biggest addition: a Team Stats & Match Center with four tabs (My Team, Stats, Events, Sim) pulling live data from The Blue Alliance and the FRC Events API, including a season-wide “World Rating,” a matchup simulator with win probabilities, and bookmarking teams to get real push notifications before their matches. I also spent a lot of time on stuff that doesn’t show up as a “feature” but makes the app actually usable: a queue + exponential backoff + retry system so the shared free-tier Gemini key doesn’t randomly fail scans under load, a report button that feeds recurring AI mistakes back into future scans, offline detection so scans fail fast instead of hanging, and a new instant-loading splash screen. What was challenging for me? The AI usage limits were the most persistent problem. Everyone shares one free-tier Gemini key, so scans would fail with no clear pattern whenever enough people hit it at once. I fixed it in stages: first a queue limiting in-flight requests, then automatic retries with backoff (and respecting the retry-after header when Gemini gave one), then finally surfacing that retry status to the user (“High demand. Retrying (2/3)…”) instead of just showing a dead spinner. The guided camera and push notifications both turned into whole rabbit holes of browser-specific pain (iOS Safari blocking camera/notification permissions unless triggered by a direct tap, no live frame streaming on web so I had to build a custom JS-interop layer from scratch, and push not working on iOS at all unless the site’s added to the home screen firs)t. My favorite bug story: the Match Center’s Events tab would spin forever with zero errors. I burned time adding timeouts and retries that did nothing before realizing the real issue. The spinner wasn’t stuck waiting on the network, it was stuck because nothing ever tried. What am I the most proud of? Going from a single-purpose AI scanner to four genuinely useful, connected tools without the codebase turning into spaghetti. I’m also proud that scans now degrade gracefully under load instead of just failing, and that notifications work reliably even though I had zero experience with service workers or VAPID keys before this. And honestly, just sticking with it. 21 devlogs and three months of real iteration based on actual user feedback instead of giving up. What should people know so they can test your project? Live app: https://mirage54321.github.io/RoboLens/ You can log in as a guest for team 4388 to browse batteries without needing an account. Push notifications currently work reliably on desktop browsers and Android (iOS Safari requires the site to be added to your home screen as a bookmark). You can test this by logging into -4388 (Yes, a negative. I needed a number that wouldn’t have a real team). The AI scan/rules tools need a robot photo to test against; if you don’t have one handy, any well-lit photo of mechanical/electrical components will still show you how the flow works.", "repo": "https://github.com/mirage54321/RoboLens", "demo": "https://mirage54321.github.io/RoboLens/"}, {"ship_num": 2, "ts": "2026-06-22T18:39:59Z", "hours": 5.0, "multiplier": 5.73, "payout": 26, "blessing": "neutral", "text": "I made an app for specifically robotics teams (although this could be used for other things too). This is still a work in progress because there is so much more I want to add. I did this project so that I could make something with an AI model and I’m really proud of myself because Flutter was really hard to work with!", "repo": "https://github.com/mirage54321/RoboLens", "demo": "https://mirage54321.github.io/RoboLens/"}]...
|
[{"post_id": 65393, "ts": "202 [{"post_id": 65393, "ts": "2026-09-10T14:37:50Z", "hours": 6.5575, "text": "Devlog #23 -> Fixed the camera disconnect crash from the feedback. Turns out the camera plugin doesn’t actually throw an error when the hardware gets yanked mid-session, it just quietly flips an internal hasError flag and keeps going. Which is why the app was crashing somewhere random instead of failing cleanly. Nothing in my code was listening for that flag, so it just kept trying to read frames and capture photos off a dead controller. Fixed it by adding a listener that actually watches for that error state, cleans everything up, and drops the user onto a proper “Camera disconnected, try again” screen instead of freezing or throwing. Also fixed the retry logic after a failed capture so it doesn’t try to restart a stream on a controller that’s already dead. Next up: the cursor. Someone pointed that out, because every button on web just shows the default arrow. Live app: https://mirage54321.github.io/RoboLens/a"}, {"post_id": 64602, "ts": "2026-09-09T03:43:12Z", "hours": 4.7133, "text": "Devlog #22 -> I was looking at the comments people left me from my ship and the first thing I noticed that I should work on is the load-in page. It is definitely kind of plain. To be honest, I used Claude to help a lot with this one. Making the spinning circle was pretty easy but I had some complex ideas I wanted to put to work and I just didn’t know how to do it. It has a huge radar that has the colors pop up and says “scounting __ teams”. Overall, I am so happy about this new design! Let me know what you guys think! I also added a folder for the photos so it looks more organized! The next thing I plan to work on “loop crashes if the camera disconnects” comment. Live app: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63881, "ts": "2026-09-07T21:41:15Z", "hours": 2.065, "text": "Updates!!! Basically, I’ve been checking to see how many users and views I have. I have google analytics on my project to keep an eye on it. Right now I have 52 users and 163 views. Which honestly, I am pretty dang happy about. (1) I haven’t really been advertising (2) I literally thought it was gonna be like 20 views Woop woop! Okay, now on these past few days I have been working on getting as many hours as possible. I don’t have a personal computer so I am really aiming for literally any of the laptops. Now, programatically I have been working on removing the 3 burst messages for iPhone (it wouldn’t compact itself on the Apple homescreen). FYI: 90% of the time for this was spent removing the 3 burst messages for iPhone and writing Ship #2… so you better be ready for Ship 2! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63811, "ts": "2026-09-07T19:35:43Z", "hours": 0.7911, "text": "Notifications are working again! Basically, the rebuilding of Render helped fix the issue which is kind of ragebait. I’m getting a little nervous though because I wonder what happens if someone doesn’t reopen the bookmark (because that is how it resets). Would they still get the messages? Will it update automatically? Overall, it works great. I just worry there may be an error that arises (that is a risk with any project honestly). View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63771, "ts": "2026-09-07T18:47:23Z", "hours": 5.1583, "text": "Devlog #19 -> I know I just committed a bunch the last few days. I guess I realized there is only a few days left and I found how to be way more efficent in getting hours. If I just keep this open and something else on another computer and work with them kinda being different windows then I get a lot more time because the switching of windows in the same computer made me keep forgetting to come back and work on the project (and I’m guessing was cutting the time too). Anywho! The most recent changes I have made is removing the ? mark button. I think I was going for a like “about me” thing but I think it was a little redundant and kind of unneccessary to say the least. I added a report button instead (it’s just in the home page). I got this idea from lovable which was something I worked with during my internship. I highkey have been working so much on this project (you can see by all my hours) that I didn’t want to connect it to the backend. It is just a popout that takes you to an gmail link and you can click send. Maybe if I run out of ideas I can add it as a backend. Now, if I am going to be so honest. I have worked a lot on this project and I want to ship but I also want to just crank out some more hours. I’m extremely proud of this project and I need to get it out to the world so that I can get some users! My issues to work on are: Low MongoDB storage for free account Professionalizing (now just looking back over and seeing if there is anything I wanna fix before putting on chief delphi) View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63405, "ts": "2026-09-07T07:05:48Z", "hours": 8.2653, "text": "Devlog #18 -> Okay, super short devlog just to explain what I am doing. Basically all my hours are spent on fixing the notifications. It is super annoying right now because I am trying to finalize my project and the notifications randomly stop working. I tried clearing out mongoDB and checking on my cron-job and those seem to be working just fine. I’m not sure what to do. I pushed the hours up (for the practice day so I can check it earlier) and redeployed with Render. I shall see tomorrow if it works. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 62347, "ts": "2026-09-05T17:45:39Z", "hours": 8.4539, "text": "Devlog #17 -> Part 3, wrapping this one up Last piece was making the retrying actually visible instead of just quietly happening in the background. Before, if a scan was retrying you’d just stare at a spinner with no idea what was going on. Now the loading screen updates to say something like “High demand. Retrying (2/3)…” so people know the app hasn’t frozen, it’s just waiting its turn. Between the queueing, the backoff retries on both ends, and this messaging, this should turn a lot of what used to be “scan failed, try again” moments into just a few extra seconds of waiting instead. Doesn’t make the free tier limit go away entirely, but it’s a big improvement over what I had. Current problems / what’s next: Low MongoDB storage for free account Professionalizing (before putting on Chief Delphi)"}, {"post_id": 61646, "ts": "2026-09-04T17:29:48Z", "hours": 9.4403, "text": "Devlog #16 -> Part 2, continuing from #15 Got retries working on top of the queue from last time. If Gemini comes back with a 429 (rate limited) or 503 (overloaded) instead of an actual answer, the backend now waits and tries again automatically, using exponential backoff (2s, then 4s, then 8s) instead of hammering it again right away, up to a few attempts before it actually gives up and reports failure. It also checks for a retry-after header first and uses that instead of the backoff timer if Gemini actually tells us how long to wait. Then I mirrored the same idea on the Flutter side, so if the backend’s retries still aren’t enough, the app itself will retry the whole request a couple more times before showing the user an error."}, {"post_id": 60875, "ts": "2026-09-03T14:59:25Z", "hours": 12.3994, "text": "Devlog #15 -> Part 1 (still working on this one!) Finally started actually tackling the AI usage limit problem from devlog #2. Since everyone using the app shares the same free-tier Gemini key, scans would just randomly fail with no real pattern whenever enough people were hitting it at once. Started on the backend side first: instead of letting every incoming scan hit Gemini immediately, I added a little queue that only lets 2 requests be in-flight to Gemini at a time, and everything else waits its turn. Next step is getting it to actually retry instead of just failing after the wait, but that’s for the next devlog."}, {"post_id": 60344, "ts": "2026-09-02T16:57:27Z", "hours": 7.4197, "text": "Devlog #14 -> Part 5 of 5 Finally! This final devlog is about the small tweaks I made in the app. I made it have a new photo Small one, just swapped out one of the app’s images for something more current since the old one was from way back in devlog #1 and didn’t really represent what the app looks like anymore. Nothing technical here, just housekeeping. It kinda works offline I say “kinda” because this isn’t a real offline mode where you can browse cached data with no internet, it’s more like the app now knows when it’s offline and fails fast instead of just hanging. Basically, I added a ConnectivityCheck helper that on web reads navigator.onLine (a free, instant, synchronous browser check for whether the device has a network interface up) so if you’re in airplane mode or your wifi is off, the AI scan screens can immediately say “can’t use this when offline” instead of sitting there for a full request timeout before failing. On native platforms there’s no real equivalent without pulling in a whole new plugin like connectivity_plus, so I just made the stub always report “online” there — an actually-offline phone still gets caught by the AI request’s own timeout/retry handling, just without the instant fail I get on web. One thing worth noting: this only checks if the device thinks it has a network connection, not whether that network actually has working internet behind it. So a wifi network that’s connected but dead will still say “online” here. That case still gets caught eventually, just the slower way through the request timeout instead of instantly. Good enough for now though, this was mostly about killing the most common case of someone trying to scan with their phone in airplane mode and just watching the app hang. I changed the load in screen Went back and reworked the loading screen from devlog #5. It’s now a plain CSS screen sitting directly in index.html instead of living inside the Flutter app itself, which means it can actually paint the instant the page loads, before Flutter has even finished downloading and booting up. That was the whole point: the old version technically only appeared once Flutter itself was far enough along to render it, so there was still a blank/white flash before it. Now there’s a little animated wordmark and spinner (the spinner’s colored arc cycles through the same colors as the logo letters) that fades out and removes itself once Flutter fires its first real frame. While I was in there I also fixed something unrelated but annoying: Flutter’s web service worker by default waits to activate a new version until every open instance of the app is fully closed, which for something people add to their home screen basically never happens naturally. So people could keep opening an old cached version of the app for a long time after I’d pushed updates. Added a bit of JS to force any newly installed service worker to skip that wait and take over immediately (reloading the page once it does), so the next time someone opens the app after I ship something, they actually get it. And that’s it, I’m all caught up! Five devlogs in one sitting was a lot, but future updates should go back to being posted as I actually build them instead of in one giant backlog dump. Current problems / what’s next: Low MongoDB storage for free account Releasing the app (onto chief delphi to get feedback)!! Making it ready to release (working on the ? and report button) Future ideas: team tracker, public chat for teams, judging/interview prep tool, callout tool, round robin generator View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 59335, "ts": "2026-09-01T02:11:53Z", "hours": 9.7772, "text": "Devlog #13 -> Part 4 of 5 Continuing from #12: more on the match center, mostly the stuff that actually broke on me. Biggest bug of the bunch: on the Events tab, tapping into an event was supposed to show “scheduled to attend” info and the competing teams list, but both of those sections would just spin forever, no error, nothing. I assumed it was a network timing issue at first and went down a whole rabbit hole adding timeouts and retry logic that did absolutely nothing. Turns out the actual problem was way dumber: when I pushed the EventDetailScreen with Navigator.push, that screen gets placed in the Overlay as a sibling of the tab tree, not a child of it, meaning it’s NOT under my MatchScope anymore. So the second that screen tried to call MatchScope.of(context), it threw an assertion error immediately, before initState even got the chance to call setState and load anything. The spinner wasn’t stuck because of a slow network, it was stuck because the load call never even ran. Fixed it by just re-wrapping the pushed route in its own MatchScope using the same controller instance. Felt very silly once I found it, but also weirdly satisfying to finally understand. Next was the matchup simulator and win probabilities. On the schedule screen I show a rough “Red 45% / Blue 55%” prediction for each match. My first instinct was to use each event’s own OPR for this, but that falls apart for upcoming events since OPR doesn’t exist until a team has actually played a match there. So instead I based predictions on the season-wide World Rating from the Stats tab (average points across every event a team’s played all season), which actually gives predictions even for a event that hasn’t started yet. Also went back and hooked the push notification bell (from devlog #11) directly into the match center’s top bar now that there’s finally a “your team” + “your event” to actually attach a subscription to. There’s a little pulsing glow animation on the bell the first time you land on a screen where you could enable alerts, just so people notice it’s there instead of it blending into the top bar. Took way too many attempts to get the glow animation timing feeling smooth and not epileptic-seizure-inducing, but I think I landed on something decent. Genuinely didn’t expect the 4th app to take this many devlogs but here we are. One more to wrap up some small stuff and then I think I’m caught up! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 58655, "ts": "2026-08-31T04:34:12Z", "hours": 9.4486, "text": "Devlog #12 -> Part 3 of 5 Okay, actual 4th app time: Team Stats & Match Center (internally I’ve just been calling it “match” in the code, so if you dig around the file names that’s why). I started by mocking everything out before touching any real API, just so I could get the UI feeling right first. Made an intro screen (basically pitching the three features: match alerts, team stats, matchup simulator) and a fake mockTeams list with made-up EPA numbers just so I had something to look at while building. Once the layout felt right, I started swapping the fake data for real stuff from The Blue Alliance’s API, proxied through my backend the same way I already had set up for the FRC Events API (so I’m not spamming TBA directly from a bunch of client apps and to keep my API key private). Architecture-wise, I did something different from my other three apps: instead of passing state down through a million constructor params, I made a MatchDataController (basically one class holding all the team/event/match data + loading state) and wrapped the whole feature in a MatchScope, which is just an InheritedNotifier. So anywhere in the match center I can just call MatchScope.of(context) and get the controller without threading it through every single widget. Probably overkill for how big this feature ended up being, but once I had 4 tabs and a handful of sub-screens all needing the same data, I was really glad I did it this way instead of my usual pass-everything-into-the-constructor approach. Speaking of tabs, I split it into 4: My Team -> your team’s own info/next match Stats -> a season-wide “World Rating” I calculate from aggregating TBA’s OPR data across events (this was its own whole thing, might do a separate devlog on it someday) Events -> browse every FRC event, filter by time or location, see who’s live right now Sim -> the matchup simulator I keep promising Getting match data to actually parse right from TBA’s JSON took a minute (comp levels like qm/qf/sf/f needed their own label logic, predicted_time vs actual_time needed fallback logic since actual_time barely ever gets posted until after the match is already over, that kind of thing) but nothing too crazy, just tedious model-writing. Devlog #13 is basically a straight continuation of this one, mostly bug stories and the simulator, so be ready for that. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 55760, "ts": "2026-08-27T19:05:53Z", "hours": 4.8611, "text": "Devlog #11 -> Part 2 of 5 Now for the second devlog, I am going to talk about how I got notifications to work. This is the one that ate my week. So the goal: when a match is coming up for a team you bookmarked, get a push notification even if the app/tab isn’t open. That last part is the whole problem, because it means I can’t just pop a normal in-app alert, I actually need real browser push notifications, which meant learning a whole new stack: service workers, VAPID keys, and the Push API. Here’s roughly how it works now ->Subscribe -> user picks a team number + event key, the app asks the browser for notification permission, and if granted it registers a push subscription through the service worker using my VAPID public key. Send to backend -> that subscription (plus team number/event key) gets sent to my Express backend and stored in MongoDB. Actually sending them -> the backend uses the web-push npm package to send the push whenever it detects a match coming up for that team. Getting the Flutter side to talk to any of this was its own adventure, since none of this exists as a nice Dart package, so I had to write a JS interop layer (basically a matchPush object in plain JS that Dart calls into) and wire it up through the same conditional-export trick I used for the guided camera: one file for web, one stub file that just says “unsupported” for native, so the app doesn’t explode on phone builds while I haven’t built native push yet. Problems I ran into (there were many) ->iOS Safari straight up does not support web push at all unless the site has been added to the home screen first. So right now notifications basically only work reliably on desktop browsers and Android, and I have to eventually explain that to iOS users somehow. Permission requests have the same “must be triggered by a direct tap” rule I fought with on the guided camera, so subscribing has to happen from an actual button press, no auto-subscribing on load. Debugging this was rough because half the errors happen silently in the service worker, not in the normal Flutter console, so I was stuck adding console.logs into push.js and checking devtools like a caveman for a while.It works now though! Bookmark a team, subscribe, and you’ll get pinged. Native (phone-installed) push notifications are still a “later” problem since that needs a totally different setup (probably Firebase Cloud Messaging), so for now the stub just returns unsupported on native and I’m keeping my scope to web. Two devlogs about the 4th app itself coming up next, promise. View it here: https://mirage54321.github.io/RoboLens/ P.S. For right now there are 3 notifications that send for iOS I plan to change that though!"}, {"post_id": 54198, "ts": "2026-08-25T02:42:40Z", "hours": 8.6025, "text": "Devlog #10 -> Part 1 of 5 Please don’t hurt me, but I have to post multiple devlogs because I worked on so many things in all this time. It’s a lot of stuff to talk about and I don’t want to write it all into one because it will be super unorganized and hard for me to find in the future. In this first devlog, I am going to talk about how I got bookmarks to work. The idea came from thinking ahead to the match notifier. If someone wants alerts for a match, they need a way to say “these are the teams I care about” without having to retype a team number every single time. So I added a bookmark system using shared_preferences (just storing a list of team numbers locally on the device/browser). You can now star a team from a few places in the app and it’ll save to your bookmarks list, which I’m planning to hook the notifier into so it can just loop through your saved teams instead of asking you every time. This one was honestly pretty painless compared to my usual chaos. The only annoying part was making sure the bookmarked list actually persisted correctly on web (learned my lesson from the MongoDB flutter-web thing, so I tested this one on both platforms before moving on lol). Turns out shared_preferences just works with local storage under the hood on web, so no weird surprises this time. Short devlog, I know, but wait till you see what devlog #11 turned into. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 49268, "ts": "2026-08-17T23:33:09Z", "hours": 6.1139, "text": "Devlog #9 -> Okay, so getting the report button to work was a little finicky. I wasn’t sure what approach to take: I could make it easy by just sending me the reported things and I could look at them and just change the prompt, or I could make it difficult by just feeding every single reported issue back into the AI model so that the AI tries to not make the same mistake (which might be a problem because someone could report something that was actually right), or make it VERY difficult make it feed back into the AI if a similar issues were coming up again and again. Guess which one I chose? Yup, the third. Basically, I decided to store the reports in MongoDB and look for recurring mistakes instead of letting a single report change the AI. That way, if one person reports something incorrectly, it doesn’t immediately affect everyone else’s scans. If the same type of mistake keeps getting reported, I can investigate it and use those reports to improve the AI.This seems really complex, and it was. It took me 4 hours (it says 6 on the devlog but 2 of them was working on the 4th app). Alright, ready for my fourth widget idea………. a match notifier!! Now don’t get too excited. I have more to tell. So, every FRC kid knows that there’s a website called Nexus that sends messages for when your game is going to start so you can get in queue, and it works really well. There’s also this thing I came across called statbotics, and it calculates many things like EPA, and more (I didn’t really stay on that website for too long). So, what I plan to do is combine them. Hopefully, I’m not getting myself into too much of a challenge. This will most definitely be the hardest thing I have ever done on this app. Wish me luck! P.S. I started making the fourth widget before the report button then switched to finish the report button halfway so if you see my commits in a confusing order that’s why. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 43541, "ts": "2026-08-08T21:26:06Z", "hours": 0.3608, "text": "Devlog #8 -> Part 2/2 (part 2 of this devlog) I also posted my app onto reddit (r/FRC) and got some feedback. From the feedback, I got the message that an AI scanner can’t be all that reliable/useful without a user-end customization. I totally agree with this. The problem is that I’m not sure if it is worth it to spend time on adding in customization tools for the AI as there is not a lot of return from it. Therefore, I think that right now the AI’s are at the best product they can be as of now (besides adding functionality to the report button). So, my time would be better spent adding in more apps into the app. On the bright side, there were lots of positive reviews about the battery section! I am now going to work on the report button for the UI because I think it will take less time to add than adding a fourth app. In my next post, I will have a confirmed idea for the fourth app! Things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ (Going to do this first because it is easier) Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Adding fourth ‘app’ ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 43529, "ts": "2026-08-08T21:02:52Z", "hours": 6.3211, "text": "Devlog #7 -> Part 2/2 (but part 1 of this devlog) Okay. This was very annoying to work on because every single time I would edit the code, I would have to recommit in order to see it on the github pages (because the permissions wouldn’t work on the flutter web-server). So, getting the guided camera working on web brought a whole lot of browser-specific issues that don’t show up on native mobile. First, the app would hang on a black loading screen because permission_handler and frame streaming aren’t supported in browsers. I then fixed that by branching on kIsWeb to skip those native-only calls and let the browser’s own getUserMedia prompt handle camera access instead.Next, iOS Safari blocked the camera request outright because it requires permission calls to fire directly from a user tap with no delay -> solved by gating the whole flow behind an explicit “Enable Camera” button instead of auto-starting on page load. Since camera_web doesn’t support live frame streaming and sensors_plus doesn’t handle iOS’s motion permission prompt, live guidance (tilt, brightness, sharpness) had to be rebuilt from scratch for web: a custom JS-interop layer (WebProbe) draws each video frame onto a hidden canvas to sample brightness/sharpness, and separately requests iOS’s DeviceMotionEvent permission to read tilt.That introduced two more subtle bugs (a Dart generics issue causing a null-cast crash in the interop code, and a timing issue where the element wasn’t in the DOM yet when we went looking for it) both fixed with explicit type arguments and a retry loop. With all of that sorted, the guided camera now works consistently across native and web, with live tilt/lighting/sharpness feedback and autocapture. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 37868, "ts": "2026-07-30T20:50:16Z", "hours": 4.4522, "text": "Devlog #6 -> Part 1/2 Hey! I know it has been awhile since I worked on my project (adding the guided camera has been taking a lot of will power), but I have a new update. I have added the guided camera to the scan screen (which I will add to the rules screen too after it is finished). The process that the guided camera uses is: Startup -> requests camera permission immediately for phone usage (permission_handler) or waits for a tap on “Enable Camera” first for browser usage. Camera setup -> fetches available cameras (from Flutter’s camera plugin), picks the back-facing one (falls back to the first available camera on the device if no back camera is found), sets resolution to high on phone or medium on browser (since browsers often reject high-res requests), then calls initialize() to start the live preview. Manual fallback for taking photos -> the shutter button is always available to captures the photo; this is the primary method right now. Capture -> stops the frame stream (phone only), takes the picture, reads the bytes, then returns them to the previous screen via Navigator.pop(context, bytes). An issue I ran into was camera permissions on iPhone Safari. It worked fine on my laptop but wouldn’t work on my phone. I eventually figured out that iPhones are notorious for always requiring explicit permission prompts, so I solved it by requiring the camera request to be triggered by a direct user tap. Basically, I added an “Enable Camera” button on web that only calls the camera setup when tapped, since iOS Safari silently blocks getUserMedia (instead of showing an error) if there’s any delay between the tap and the request. Now I am working on the flutter comments (“too dark”, “focus”, etc.) because right now those aren’t working. Once I get the live guidance to work, then I will be able to implement an auto-capture (that way the photo is taken when at a good angle). View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 29717, "ts": "2026-07-16T20:11:47Z", "hours": 4.3139, "text": "Devlog #5 -> My app now has a load in screen! Yay! I figured it was necessary just to make my whole app look more professional. It was pretty easy (took lots of time though) to add and I didn’t fall into any huge difficulties. Only a mini one because I tried to make the animation in the home screen class and it got chaotic. Once it was its own file it was quite easy because then I just needed to fix up the UI. Look here if you want to learn more about how to do animations in your own project (if using Flutter): https://docs.flutter.dev/ui/animations I also added a very tiny change to the error message for logging in. Instead of saying “Team already registered”, it tells you to contact my email if you cannot access your team. I guess I got really nervous that someone would try to access their team, and if they couldn’t, they would go and put another team’s number and so on indefinitely. Right now, I think this is a good way to fix the issue, but I’ll add a way to report it in the app; that way, the issue can be solved quicker, and you won’t have to send an email to someone. I did have the idea to make it so there is identification of some sort for each team; however, that would just make the app complex, and my whole goal was to have a simple solution to problems. So, if this app actually does really well in the FRC world, I will add some sort of verification; that way lost accounts can be found, and it would just give all-around easier access. Next, I am going to focus on my long put off task: photo to video. I am not sure how I am going to do this, if I am going to be so honest. My idea for it came fom the Smile Doctors invisalign app where it opens up your camera and tells you things like “go to better lighting” or “move to the left”. However, I think that will be super complex and difficult to implement so I might have to start a lot smaller. Best of luck to myself, I guess! List of current tasks: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 28023, "ts": "2026-07-14T00:50:11Z", "hours": 4.6822, "text": "Devlog #4 -> Hey! I have been working on the issues I talked about in my last devlog. So far I have successfully solved one: How I solved “Connenction to MongoDB working for flutter web but not github?” -> The issue was that GitHub Pages is a static hosting service and couldn’t connect directly to MongoDB. Therefore I had to update the application so the GitHub Pages frontend communicates with the Express backend on Render. Basically, I just modified some of the backend configuration like changing (in very very simple terms): fetch(‘/battery’) to something like fetch(‘ https://ridgeboticsapp.onrender.com/battery ’). I also added a ? mark button so that if clicked on it can tell you a little more about the app. Right now, it is just saying some basic things but I plan to show this app to my friends and see what they think I should add to that text in order to help people figure out what is going on if they just found my app. Finally, I fixed an error I wasn’t even aware of: the name finder for each teams batteries. I made it so when you sign up your team, it will try to search up the team name with that FRC number. However, there would be times where I would sign in as my team and it would show up with some random name like “Robo-Knights” or something weird. I think this was related to the Gemini model because I had used it while testing, soincorrect team names could have been stored and reused instead of being verified. To fix this, I connected my backend to the official FRC Events API. Now, the app sends the team’s FRC number to FIRST to retrieve the official team information to then save the verified team name. This prevents teams from accidentally being assigned another team’s name and makes sure the battery data is connected to the correct FRC team. It was never too big of an issue because I could always just edit the names in MongoDB but having it so it says the name right 100% of the time is just much easier for me. Now my new top things to work on are: If team is signed up but you don’t have access to your team Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) Report button working better to fix the AI’s findings View it here: https://mirage54321.github.io/RoboLens/ P.S. If you are trying things out you can sign in as a guest for 4388 and see my teams batteries"}, {"post_id": 24928, "ts": "2026-07-08T20:05:31Z", "hours": 1.5633, "text": "Devlog #3 -> In the past few days I have been working on adding a battery tracker because I believe that it has the potential to be very helpful to FRC teams. Tracking batteries is always a pain for my team, and other teams I’ve connected with can probably agree with that statement. Batteries can randomly fail by not charging or just full-on dying in two minutes. Although one might assume that keeping track of all this is easy, it truly is not. Having a system to hold records and data, I believe, can be very helpful to teams! I’ve added the third tool to the app: a shared battery tracker where a team can log in with a team number and passcode, add batteries, and mark each one as charging, in use, or available. It also lets you flag a battery as weak or unreliable with a note, so if a battery dies mid-match, the whole team can see that history the next time they’re deciding which one to grab. I even added an option for the AI to recommend which battery to use next based on how long it’s been charged and whether it’s been flagged before. My new challenge for this tool has been working with MongoDB. It stores the data fine, but it wasn’t letting me log in (it kept throwing an error). What confused me more is that when I ran it in Flutter web, it worked just fine. This is what I plan to work on for the next few days. To fix my last problem, which was with the AI saying it had spikes in usage, I changed the message to ask the user to try again because it usually works on the try right after. Right now, this is just a temporary solution until I can find a new AI model. List of things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI Find permanant solution for the AI usage Connenction to MongoDB working for flutter web but not github? Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) View it here: https://mirage54321.github.io/RoboLens/ Log in as guest for team 4388 if you just want to view it. P.S. My logged time is glitching out a bunch and I would love if someone could help me in the #stardance-help on slack."}, {"post_id": 23707, "ts": "2026-07-06T20:19:01Z", "hours": 9.0781, "text": "Devlog #2-> Now that I’ve finished the foundation of my project, I can keep adding tools! On my last ship, I realized I should keep more documentation. So be ready for more devlogs going forward! To get a little more comfortable with what I’m doing, I decided to add another AI scanning tool that I have been thinking about: a rules checker. The general scanner already looked for physical problems like wiring and cracks, but I wanted something that could actually check a robot against the official FRC rulebook. So I added the actual PDFs of past FRC game manuals (2024, 2025, and 2026) and let the user pick which season’s rules to check against. That PDF gets fed into the AI alongside the photo, so instead of relying on whatever general FRC knowledge the model already has (which could be outdated or made up), it’s reading the exact rulebook for that year while it looks at the image. Getting the PDF into the AI request in the first place took some figuring out. I had to load it from the app’s assets, converting it into a format the API would actually accept, and making sure it got sent alongside the image without breaking anything. Once it worked though, the difference was noticeable (the AI’s answers started actually referencing real rules instead of guesses). The bigger challenge was AI usage limits. Not “too many messages” though. Instead, it was more that other people using the same free model at the same time meant my requests were competing with everyone else’s. Half the time a scan would go through fine, and the other half it just wouldn’t, with no real pattern I could find. To fix this I… haven’t yet, honestly. Still an open problem :(. Hoping to hear from you guys for some ideas! I’m a little nervous because AI kind of has a negative connotation in FRC. To address that issue, I’m planning to make the whole app not centered around AI so I’ll be adding more tools. Excited to keep going though, because I just started programming my new idea: adding a battery tracker! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 13860, "ts": "2026-06-22T18:21:53Z", "hours": 4.63, "text": "Devlog #1-> I’ve finished the foundation of my project! The app currently has a simple UI and one AI tool that takes in a photo and tells you what’s wrong with it — whether it’s frayed wiring, loose screws, cracked/bent frames, or corrosion. Goal of my project: cut down the time it takes to find an issue so an FRC team has more time to actually fix the problem, and flag problems a human might miss during a rushed pit-stop check. Working with Flutter to program the UI wasn’t too bad. I’ve always been used to Java and JavaScript, so although Dart isn’t exactly the same, I picked it up pretty fast. I had the most difficulty implementing the AI. I started with an Ollama model, but it was way too slow — it would time out before it ever finished telling me what it noticed in the photo. I then found out Google lets you use a free Gemini model, so I got an API key for that and added it in. The new problem: every time I published my app as a GitHub Page, the API key would get disabled because it wasn’t safe sitting in client-side code. I finally learned the key needs to live on a backend to actually be secure, so I set one up using Render. I’m so proud of how my project is looking so far! Next up, I plan to add more tools, like a rules scanner."}]...
|
Title: Robotics RoboLens by @mira_j_maroni | Stard Title: Robotics RoboLens by @mira_j_maroni | Stardance
Devlogs:
Devlog #1-> I’ve finished the foundation of my project! The app currently has a simple UI and one AI tool that takes in a photo and tells you what’s wrong with it — whether it’s frayed wiring, loose screws, cracked/bent frames, or corrosion. Goal of my project: cut down the time it takes to find an issue so an FRC team has more time to actually fix the problem, and flag problems a human might miss during a rushed pit-stop check. Working with Flutter to program the UI wasn’t too bad. I’ve always been used to Java and JavaScript, so although Dart isn’t exactly the same, I picked it up pretty fast. I had the most difficulty implementing the AI. I started with an Ollama model, but it was way too slow — it would time out before it ever finished telling me what it noticed in the photo. I then found out Google lets you use a free Gemini model, so I got an API key for that and added it in. The new problem: every time I published my app as a GitHub Page, the API key would get disabled because it wasn’t safe sitting in client-side code. I finally learned the key needs to live on a backend to actually be secure, so I set one up using Render. I’m so proud of how my project is looking so far! Next up, I plan to add more tools, like a rules scanner.
Devlog #2-> Now that I’ve finished the foundation of my project, I can keep adding tools! On my last ship, I realized I should keep more documentation. So be ready for more devlogs going forward! To get a little more comfortable with what I’m doing, I decided to add another AI scanning tool that I have been thinking about: a rules checker. The general scanner already looked for physical problems like wiring and cracks, but I wanted something that could actually check a robot against the official FRC rulebook. So I added the actual PDFs of past FRC game manuals (2024, 2025, and 2026) and let the user pick which season’s rules to check against. That PDF gets fed into the AI alongside the photo, so instead of relying on whatever general FRC knowledge the model already has (which could be outdated or made up), it’s reading the exact rulebook for that year while it looks at the image. Getting the PDF into the AI request in the first place took some figuring out. I had to load it from the app’s assets, converting it into a format the API would actually accept, and making sure it got sent alongside the image without breaking anything. Once it worked though, the difference was noticeable (the AI’s answers started actually referencing real rules instead of guesses). The bigger challenge was AI usage limits. Not “too many messages” though. Instead, it was more that other people using the same free model at the same time meant my requests were competing with everyone else’s. Half the time a scan would go through fine, and the other half it just wouldn’t, with no real pattern I could find. To fix this I… haven’t yet, honestly. Still an open problem :(. Hoping to hear from you guys for some ideas! I’m a little nervous because AI kind of has a negative connotation in FRC. To address that issue, I’m planning to make the whole app not centered around AI so I’ll be adding more tools. Excited to keep going though, because I just started programming my new idea: adding a battery tracker! View it here: https://mirage54321.github.io/RoboLens/
Devlog #3 -> In the past few days I have been working on adding a battery tracker because I believe that it has the potential to be very helpful to FRC teams. Tracking batteries is always a pain for my team, and other teams I’ve connected with can probably agree with that statement. Batteries can randomly fail by not charging or just full-on dying in two minutes. Although one might assume that keeping track of all this is easy, it truly is not. Having a system to hold records and data, I believe, can be very helpful to teams! I’ve added the third tool to the app: a shared battery tracker where a team can log in with a team number and passcode, add batteries, and mark each one as charging, in use, or available. It also lets you flag a battery as weak or unreliable with a note, so if a battery dies mid-match, the whole team can see that history the next time they’re deciding which one to grab. I even added an option for the AI to recommend which battery to use next based on how long it’s been charged and whether it’s been flagged before. My new challenge for this tool has been working with MongoDB. It stores the data fine, but it wasn’t letting me log in (it kept throwing an error). What confused me more is that when I ran it in Flutter web, it worked just fine. This is what I plan to work on for the next few days. To fix my last problem, which was with the AI saying it had spikes in usage, I changed the message to ask the user to try again because it usually works on the try right after. Right now, this is just a temporary solution until I can find a new AI model. List of things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI Find permanant solution for the AI usage Connenction to MongoDB working for flutter web but not github? Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) View it here: https://mirage54321.github.io/RoboLens/ Log in as guest for team 4388 if you just want to view it. P.S. My logged time is glitching out a bunch and I would love if someone could help me in the #stardance-help on slack.
Devlog #4 -> Hey! I have been working on the issues I talked about in my last devlog. So far I have successfully solved one: How I solved “Connenction to MongoDB working for flutter web but not github?” -> The issue was that GitHub Pages is a static hosting service and couldn’t connect directly to MongoDB. Therefore I had to update the application so the GitHub Pages frontend communicates with the Express backend on Render. Basically, I just modified some of the backend configuration like changing (in very very simple terms): fetch(‘/battery’) to something like fetch(‘ https://ridgeboticsapp.onrender.com/battery ’). I also added a ? mark button so that if clicked on it can tell you a little more about the app. Right now, it is just saying some basic things but I plan to show this app to my friends and see what they think I should add to that text in order to help people figure out what is going on if they just found my app. Finally, I fixed an error I wasn’t even aware of: the name finder for each teams batteries. I made it so when you sign up your team, it will try to search up the team name with that FRC number. However, there would be times where I would sign in as my team and it would show up with some random name like “Robo-Knights” or something weird. I think this was related to the Gemini model because I had used it while testing, soincorrect team names could have been stored and reused instead of being verified. To fix this, I connected my backend to the official FRC Events API. Now, the app sends the team’s FRC number to FIRST to retrieve the official team information to then save the verified team name. This prevents teams from accidentally being assigned another team’s name and makes sure the battery data is connected to the correct FRC team. It was never too big of an issue because I could always just edit the names in MongoDB but having it so it says the name right 100% of the time is just much easier for me. Now my new top things to work on are: If team is signed up but you don’t have access to your team Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) Report button working better to fix the AI’s findings View it here: https://mirage54321.github.io/RoboLens/ P.S. If you are trying things out you can sign in as a guest for 4388 and see my teams batteries
Devlog #5 -> My app now has a load in screen! Yay! I figured it was necessary just to make my whole app look more professional. It was pretty easy (took lots of time though) to add and I didn’t fall into any huge difficulties. Only a mini one because I tried to make the animation in the home screen class and it got chaotic. Once it was its own file it was quite easy because then I just needed to fix up the UI. Look here if you want to learn more about how to do animations in your own project (if using Flutter): https://docs.flutter.dev/ui/animations I also added a very tiny change to the error message for logging in. Instead of saying “Team already registered”, it tells you to contact my email if you cannot access your team. I guess I got really nervous that someone would try to access their team, and if they couldn’t, they would go and put another team’s number and so on indefinitely. Right now, I think this is a good way to fix the issue, but I’ll add a way to report it in the app; that way, the issue can be solved quicker, and you won’t have to send an email to someone. I did have the idea to make it so there is identification of some sort for each team; however, that would just make the app complex, and my whole goal was to have a simple solution to problems. So, if this app actually does really well in the FRC world, I will add some sort of verification; that way lost accounts can be found, and it would just give all-around easier access. Next, I am going to focus on my long put off task: photo to video. I am not sure how I am going to do this, if I am going to be so honest. My idea for it came fom the Smile Doctors invisalign app where it opens up your camera and tells you things like “go to better lighting” or “move to the left”. However, I think that will be super complex and difficult to implement so I might have to start a lot smaller. Best of luck to myself, I guess! List of current tasks: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/
Devlog #6 -> Part 1/2 Hey! I know it has been awhile since I worked on my project (adding the guided camera has been taking a lot of will power), but I have a new update. I have added the guided camera to the scan screen (which I will add to the rules screen too after it is finished). The process that the guided camera uses is: Startup -> requests camera permission immediately for phone usage (permission_handler) or waits for a tap on “Enable Camera” first for browser usage. Camera setup -> fetches available cameras (from Flutter’s camera plugin), picks the back-facing one (falls back to the first available camera on the device if no back camera is found), sets resolution to high on phone or medium on browser (since browsers often reject high-res requests), then calls initialize() to start the live preview. Manual fallback for taking photos -> the shutter button is always available to captures the photo; this is the primary method right now. Capture -> stops the frame stream (phone only), takes the picture, reads the bytes, then returns them to the previous screen via Navigator.pop(context, bytes). An issue I ran into was camera permissions on iPhone Safari. It worked fine on my laptop but wouldn’t work on my phone. I eventually figured out that iPhones are notorious for always requiring explicit permission prompts, so I solved it by requiring the camera request to be triggered by a direct user tap. Basically, I added an “Enable Camera” button on web that only calls the camera setup when tapped, since iOS Safari silently blocks getUserMedia (instead of showing an error) if there’s any delay between the tap and the request. Now I am working on the flutter comments (“too dark”, “focus”, etc.) because right now those aren’t working. Once I get the live guidance to work, then I will be able to implement an auto-capture (that way the photo is taken when at a good angle). View it here: https://mirage54321.github.io/RoboLens/
Devlog #7 -> Part 2/2 (but part 1 of this devlog) Okay. This was very annoying to work on because every single time I would edit the code, I would have to recommit in order to see it on the github pages (because the permissions wouldn’t work on the flutter web-server). So, getting the guided camera working on web brought a whole lot of browser-specific issues that don’t show up on native mobile. First, the app would hang on a black loading screen because permission_handler and frame streaming aren’t supported in browsers. I then fixed that by branching on kIsWeb to skip those native-only calls and let the browser’s own getUserMedia prompt handle camera access instead.Next, iOS Safari blocked the camera request outright because it requires permission calls to fire directly from a user tap with no delay -> solved by gating the whole flow behind an explicit “Enable Camera” button instead of auto-starting on page load. Since camera_web doesn’t support live frame streaming and sensors_plus doesn’t handle iOS’s motion permission prompt, live guidance (tilt, brightness, sharpness) had to be rebuilt from scratch for web: a custom JS-interop layer (WebProbe) draws each video frame onto a hidden canvas to sample brightness/sharpness, and separately requests iOS’s DeviceMotionEvent permission to read tilt.That introduced two more subtle bugs (a Dart generics issue causing a null-cast crash in the interop code, and a timing issue where the element wasn’t in the DOM yet when we went looking for it) both fixed with explicit type arguments and a retry loop. With all of that sorted, the guided camera now works consistently across native and web, with live tilt/lighting/sharpness feedback and autocapture. View it here: https://mirage54321.github.io/RoboLens/
Devlog #8 -> Part 2/2 (part 2 of this devlog) I also posted my app onto reddit (r/FRC) and got some feedback. From the feedback, I got the message that an AI scanner can’t be all that reliable/useful without a user-end customization. I totally agree with this. The problem is that I’m not sure if it is worth it to spend time on adding in customization tools for the AI as there is not a lot of return from it. Therefore, I think that right now the AI’s are at the best product they can be as of now (besides adding functionality to the report button). So, my time would be better spent adding in more apps into the app. On the bright side, there were lots of positive reviews about the battery section! I am now going to work on the report button for the UI because I think it will take less time to add than adding a fourth app. In my next post, I will have a confirmed idea for the fourth app! Things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ (Going to do this first because it is easier) Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Adding fourth ‘app’ ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/
Devlog #9 -> Okay, so getting the report button to work was a little finicky. I wasn’t sure what approach to take: I could make it easy by just sending me the reported things and I could look at them and just change the prompt, or I could make it difficult by just feeding every single reported issue back into the AI model so that the AI tries to not make the same mistake (which might be a problem because someone could report something that was actually right), or make it VERY difficult make it feed back into the AI if a similar issues were coming up again and again. Guess which one I chose? Yup, the third. Basically, I decided to store the reports in MongoDB and look for recurring mistakes instead of letting a single report change the AI. That way, if one person reports something incorrectly, it doesn’t immediately affect everyone else’s scans. If the same type of mistake keeps getting reported, I can investigate it and use those reports to improve the AI.This seems really complex, and it was. It took me 4 hours (it says 6 on the devlog but 2 of them was working on the 4th app). Alright, ready for my fourth widget idea………. a match notifier!! Now don’t get too excited. I have more to tell. So, every FRC kid knows that there’s a website called Nexus that sends messages for when your game is going to start so you can get in queue, and it works really well. There’s also this thing I came across called statbotics, and it calculates many things like EPA, and more (I didn’t really stay on that website for too long). So, what I plan to do is combine them. Hopefully, I’m not getting myself into too much of a challenge. This will most definitely be the hardest thing I have ever done on this app. Wish me luck! P.S. I started making the fourth widget before the report button then switched to finish the report button halfway so if you see my commits in a confusing order that’s why. View it here: https://mirage54321.github.io/RoboLens/
Devlog #10 -> Part 1 of 5 Please don’t hurt me, but I have to post multiple devlogs because I worked on so many things in all this time. It’s a lot of stuff to talk about and I don’t want to write it all into one because it will be super unorganized and hard for me to find in the future. In this first devlog, I am going to talk about how I got bookmarks to work. The idea came from thinking ahead to the match notifier. If someone wants alerts for a match, they need a way to say “these are the teams I care about” without having to retype a team number every single time. So I added a bookmark system using shared_preferences (just storing a list of team numbers locally on the device/browser). You can now star a team from a few places in the app and it’ll save to your bookmarks list, which I’m planning to hook the notifier into so it can just loop through your saved teams instead of asking you every time. This one was honestly pretty painless compared to my usual chaos. The only annoying part was making sure the bookmarked list actually persisted correctly on web (learned my lesson from the MongoDB flutter-web thing, so I tested this one on both platforms before moving on lol). Turns out shared_preferences just works with local storage under the hood on web, so no weird surprises this time. Short devlog, I know, but wait till you see what devlog #11 turned into. View it here: https://mirage54321.github.io/RoboLens/
Devlog #11 -> Part 2 of 5 Now for the second devlog, I am going to talk about how I got notifications to work. This is the one that ate my week. So the goal: when a match is coming up for a team you bookmarked, get a push notification even if the app/tab isn’t open. That last part is the whole problem, because it means I can’t just pop a normal in-app alert, I actually need real browser push notifications, which meant learning a whole new stack: service workers, VAPID keys, and the Push API. Here’s roughly how it works now ->Subscribe -> user picks a team number + event key, the app asks the browser for notification permission, and if granted it registers a push subscription through the service worker using my VAPID public key. Send to backend -> that subscription (plus team number/event key) gets sent to my Express backend and stored in MongoDB. Actually sending them -> the backend uses the web-push npm package to send the push whenever it detects a match coming up for that team. Getting the Flutter side to talk to any of this was its own adventure, since none of this exists as a nice Dart package, so I had to write a JS interop layer (basically a matchPush object in plain JS that Dart calls into) and wire it up through the same conditional-export trick I used for the guided camera: one file for web, one stub file that just says “unsupported” for native, so the app doesn’t explode on phone builds while I haven’t built native push yet. Problems I ran into (there were many) ->iOS Safari straight up does not support web push at all unless the site has been added to the home screen first. So right now notifications basically only work reliably on desktop browsers and Android, and I have to eventually explain that to iOS users somehow. Permission requests have the same “must be triggered by a direct tap” rule I fought with on the guided camera, so subscribing has to happen from an actual button press, no auto-subscribing on load. Debugging this was rough because half the errors happen silently in the service worker, not in the normal Flutter console, so I was stuck adding console.logs into push.js and checking devtools like a caveman for a while.It works now though! Bookmark a team, subscribe, and you’ll get pinged. Native (phone-installed) push notifications are still a “later” problem since that needs a totally different setup (probably Firebase Cloud Messaging), so for now the stub just returns unsupported on native and I’m keeping my scope to web. Two devlogs about the 4th app itself coming up next, promise. View it here: https://mirage54321.github.io/RoboLens/ P.S. For right now there are 3 notifications that send for iOS I plan to change that though!
Devlog #12 -> Part 3 of 5 Okay, actual 4th app time: Team Stats & Match Center (internally I’ve just been calling it “match” in the code, so if you dig around the file names that’s why). I started by mocking everything out before touching any real API, just so I could get the UI feeling right first. Made an intro screen (basically pitching the three features: match alerts, team stats, matchup simulator) and a fake mockTeams list with made-up EPA numbers just so I had something to look at while building. Once the layout felt right, I started swapping the fake data for real stuff from The Blue Alliance’s API, proxied through my backend the same way I already had set up for the FRC Events API (so I’m not spamming TBA directly from a bunch of client apps and to keep my API key private). Architecture-wise, I did something different from my other three apps: instead of passing state down through a million constructor params, I made a MatchDataController (basically one class holding all the team/event/match data + loading state) and wrapped the whole feature in a MatchScope, which is just an InheritedNotifier. So anywhere in the match center I can just call MatchScope.of(context) and get the controller without threading it through every single widget. Probably overkill for how big this feature ended up being, but once I had 4 tabs and a handful of sub-screens all needing the same data, I was really glad I did it this way instead of my usual pass-everything-into-the-constructor approach. Speaking of tabs, I split it into 4: My Team -> your team’s own info/next match Stats -> a season-wide “World Rating” I calculate from aggregating TBA’s OPR data across events (this was its own whole thing, might do a separate devlog on it someday) Events -> browse every FRC event, filter by time or location, see who’s live right now Sim -> the matchup simulator I keep promising Getting match data to actually parse right from TBA’s JSON took a minute (comp levels like qm/qf/sf/f needed their own label logic, predicted_time vs actual_time needed fallback logic since actual_time barely ever gets posted until after the match is already over, that kind of thing) but nothing too crazy, just tedious model-writing. Devlog #13 is basically a straight continuation of this one, mostly bug stories and the simulator, so be ready for that. View it here: https://mirage54321.github.io/RoboLens/
Devlog #13 -> Part 4 of 5 Continuing from #12: more on the match center, mostly the stuff that actually broke on me. Biggest bug of the bunch: on the Events tab, tapping into an event was supposed to show “scheduled to attend” info and the competing teams list, but both of those sections would just spin forever, no error, nothing. I assumed it was a network timing issue at first and went down a whole rabbit hole adding timeouts and retry logic that did absolutely nothing. Turns out the actual problem was way dumber: when I pushed the EventDetailScreen with Navigator.push, that screen gets placed in the Overlay as a sibling of the tab tree, not a child of it, meaning it’s NOT under my MatchScope anymore. So the second that screen tried to call MatchScope.of(context), it threw an assertion error immediately, before initState even got the chance to call setState and load anything. The spinner wasn’t stuck because of a slow network, it was stuck because the load call never even ran. Fixed it by just re-wrapping the pushed route in its own MatchScope using the same controller instance. Felt very silly once I found it, but also weirdly satisfying to finally understand. Next was the matchup simulator and win probabilities. On the schedule screen I show a rough “Red 45% / Blue 55%” prediction for each match. My first instinct was to use each event’s own OPR for this, but that falls apart for upcoming events since OPR doesn’t exist until a team has actually played a match there. So instead I based predictions on the season-wide World Rating from the Stats tab (average points across every event a team’s played all season), which actually gives predictions even for a event that hasn’t started yet. Also went back and hooked the push notification bell (from devlog #11) directly into the match center’s top bar now that there’s finally a “your team” + “your event” to actually attach a subscription to. There’s a little pulsing glow animation on the bell the first time you land on a screen where you could enable alerts, just so people notice it’s there instead of it blending into the top bar. Took way too many attempts to get the glow animation timing feeling smooth and not epileptic-seizure-inducing, but I think I landed on something decent. Genuinely didn’t expect the 4th app to take this many devlogs but here we are. One more to wrap up some small stuff and then I think I’m caught up! View it here: https://mirage54321.github.io/RoboLens/
Devlog #14 -> Part 5 of 5 Finally! This final devlog is about the small tweaks I made in the app. I made it have a new photo Small one, just swapped out one of the app’s images for something more current since the old one was from way back in devlog #1 and didn’t really represent what the app looks like anymore. Nothing technical here, just housekeeping. It kinda works offline I say “kinda” because this isn’t a real offline mode where you can browse cached data with no internet, it’s more like the app now knows when it’s offline and fails fast instead of just hanging. Basically, I added a ConnectivityCheck helper that on web reads navigator.onLine (a free, instant, synchronous browser check for whether the device has a network interface up) so if you’re in airplane mode or your wifi is off, the AI scan screens can immediately say “can’t use this when offline” instead of sitting there for a full request timeout before failing. On native platforms there’s no real equivalent without pulling in a whole new plugin like connectivity_plus, so I just made the stub always report “online” there — an actually-offline phone still gets caught by the AI request’s own timeout/retry handling, just without the instant fail I get on web. One thing worth noting: this only checks if the device thinks it has a network connection, not whether that network actually has working internet behind it. So a wifi network that’s connected but dead will still say “online” here. That case still gets caught eventually, just the slower way through the request timeout instead of instantly. Good enough for now though, this was mostly about killing the most common case of someone trying to scan with their phone in airplane mode and just watching the app hang. I changed the load in screen Went back and reworked the loading screen from devlog #5. It’s now a plain CSS screen sitting directly in index.html instead of living inside the Flutter app itself, which means it can actually paint the instant the page loads, before Flutter has even finished downloading and booting up. That was the whole point: the old version technically only appeared once Flutter itself was far enough along to render it, so there was still a blank/white flash before it. Now there’s a little animated wordmark and spinner (the spinner’s colored arc cycles through the same colors as the logo letters) that fades out and removes itself once Flutter fires its first real frame. While I was in there I also fixed something unrelated but annoying: Flutter’s web service worker by default waits to activate a new version until every open instance of the app is fully closed, which for something people add to their home screen basically never happens naturally. So people could keep opening an old cached version of the app for a long time after I’d pushed updates. Added a bit of JS to force any newly installed service worker to skip that wait and take over immediately (reloading the page once it does), so the next time someone opens the app after I ship something, they actually get it. And that’s it, I’m all caught up! Five devlogs in one sitting was a lot, but future updates should go back to being posted as I actually build them instead of in one giant backlog dump. Current problems / what’s next: Low MongoDB storage for free account Releasing the app (onto chief delphi to get feedback)!! Making it ready to release (working on the ? and report button) Future ideas: team tracker, public chat for teams, judging/interview prep tool, callout tool, round robin generator View it here: https://mirage54321.github.io/RoboLens/
Devlog #15 -> Part 1 (still working on this one!) Finally started actually tackling the AI usage limit problem from devlog #2. Since everyone using the app shares the same free-tier Gemini key, scans would just randomly fail with no real pattern whenever enough people were hitting it at once. Started on the backend side first: instead of letting every incoming scan hit Gemini immediately, I added a little queue that only lets 2 requests be in-flight to Gemini at a time, and everything else waits its turn. Next step is getting it to actually retry instead of just failing after the wait, but that’s for the next devlog.
Devlog #16 -> Part 2, continuing from #15 Got retries working on top of the queue from last time. If Gemini comes back with a 429 (rate limited) or 503 (overloaded) instead of an actual answer, the backend now waits and tries again automatically, using exponential backoff (2s, then 4s, then 8s) instead of hammering it again right away, up to a few attempts before it actually gives up and reports failure. It also checks for a retry-after header first and uses that instead of the backoff timer if Gemini actually tells us how long to wait. Then I mirrored the same idea on the Flutter side, so if the backend’s retries still aren’t enough, the app itself will retry the whole request a couple more times before showing the user an error.
Devlog #17 -> Part 3, wrapping this one up Last piece was making the retrying actually visible instead of just quietly happening in the background. Before, if a scan was retrying you’d just stare at a spinner with no idea what was going on. Now the loading screen updates to say something like “High demand. Retrying (2/3)…” so people know the app hasn’t frozen, it’s just waiting its turn. Between the queueing, the backoff retries on both ends, and this messaging, this should turn a lot of what used to be “scan failed, try again” moments into just a few extra seconds of waiting instead. Doesn’t make the free tier limit go away entirely, but it’s a big improvement over what I had. Current problems / what’s next: Low MongoDB storage for free account Professionalizing (before putting on Chief Delphi)
Devlog #18 -> Okay, super short devlog just to explain what I am doing. Basically all my hours are spent on fixing the notifications. It is super annoying right now because I am trying to finalize my project and the notifications randomly stop working. I tried clearing out mongoDB and checking on my cron-job and those seem to be working just fine. I’m not sure what to do. I pushed the hours up (for the practice day so I can check it earlier) and redeployed with Render. I shall see tomorrow if it works. View it here: https://mirage54321.github.io/RoboLens/
Devlog #19 -> I know I just committed a bunch the last few days. I guess I realized there is only a few days left and I found how to be way more efficent in getting hours. If I just keep this open and something else on another computer and work with them kinda being different windows then I get a lot more time because the switching of windows in the same computer made me keep forgetting to come back and work on the project (and I’m guessing was cutting the time too). Anywho! The most recent changes I have made is removing the ? mark button. I think I was going for a like “about me” thing but I think it was a little redundant and kind of unneccessary to say the least. I added a report button instead (it’s just in the home page). I got this idea from lovable which was something I worked with during my internship. I highkey have been working so much on this project (you can see by all my hours) that I didn’t want to connect it to the backend. It is just a popout that takes you to an gmail link and you can click send. Maybe if I run out of ideas I can add it as a backend. Now, if I am going to be so honest. I have worked a lot on this project and I want to ship but I also want to just crank out some more hours. I’m extremely proud of this project and I need to get it out to the world so that I can get some users! My issues to work on are: Low MongoDB storage for free account Professionalizing (now just looking back over and seeing if there is anything I wanna fix before putting on chief delphi) View it here: https://mirage54321.github.io/RoboLens/
Notifications are working again! Basically, the rebuilding of Render helped fix the issue which is kind of ragebait. I’m getting a little nervous though because I wonder what happens if someone doesn’t reopen the bookmark (because that is how it resets). Would they still get the messages? Will it update automatically? Overall, it works great. I just worry there may be an error that arises (that is a risk with any project honestly). View it here: https://mirage54321.github.io/RoboLens/
Updates!!! Basically, I’ve been checking to see how many users and views I have. I have google analytics on my project to keep an eye on it. Right now I have 52 users and 163 views. Which honestly, I am pretty dang happy about. (1) I haven’t really been advertising (2) I literally thought it was gonna be like 20 views Woop woop! Okay, now on these past few days I have been working on getting as many hours as possible. I don’t have a personal computer so I am really aiming for literally any of the laptops. Now, programatically I have been working on removing the 3 burst messages for iPhone (it wouldn’t compact itself on the Apple homescreen). FYI: 90% of the time for this was spent removing the 3 burst messages for iPhone and writing Ship #2… so you better be ready for Ship 2! View it here: https://mirage54321.github.io/RoboLens/
Devlog #22 -> I was looking at the comments people left me from my ship and the first thing I noticed that I should work on is the load-in page. It is definitely kind of plain. To be honest, I used Claude to help a lot with this one. Making the spinning circle was pretty easy but I had some complex ideas I wanted to put to work and I just didn’t know how to do it. It has a huge radar that has the colors pop up and says “scounting __ teams”. Overall, I am so happy about this new design! Let me know what you guys think! I also added a folder for the photos so it looks more organized! The next thing I plan to work on “loop crashes if the camera disconnects” comment. Live app: https://mirage54321.github.io/RoboLens/
Devlog #23 -> Fixed the camera disconnect crash from the feedback. Turns out the camera plugin doesn’t actually throw an error when the hardware gets yanked mid-session, it just quietly flips an internal hasError flag and keeps going. Which is why the app was crashing somewhere random instead of failing cleanly. Nothing in my code was listening for that flag, so it just kept trying to read frames and capture photos off a dead controller. Fixed it by adding a listener that actually watches for that error state, cleans everything up, and drops the user onto a proper “Camera disconnected, try again” screen instead of freezing or throwing. Also fixed the retry logic after a failed capture so it doesn’t try to restart a stream on a controller that’s already dead. Next up: the cursor. Someone pointed that out, because every button on web just shows the default arrow. Live app: https://mirage54321.github.io/RoboLens/a
Ships:
I made an app for specifically robotics teams (although this could be used for other things too). This is still a work in progress because there is so much more I want to add. I did this project so that I could make something with an AI model and I’m really proud of myself because Flutter was really hard to work with!
What did I make? Since Ship #1, RoboLens grew from one AI scanner into four connected tools. I added a rules checker that reads the actual FRC game manual (2024–2026) alongside your robot photo so it’s grounded in real rules instead of guessing. I built out a full shared battery tracker. I added a guided camera that walks you through lighting/tilt/framing and auto-captures once the angle looks right. And the biggest addition: a Team Stats & Match Center with four tabs (My Team, Stats, Events, Sim) pulling live data from The Blue Alliance and the FRC Events API, including a season-wide “World Rating,” a matchup simulator with win probabilities, and bookmarking teams to get real push notifications before their matches. I also spent a lot of time on stuff that doesn’t show up as a “feature” but makes the app actually usable: a queue + exponential backoff + retry system so the shared free-tier Gemini key doesn’t randomly fail scans under load, a report button that feeds recurring AI mistakes back into future scans, offline detection so scans fail fast instead of hanging, and a new instant-loading splash screen. What was challenging for me? The AI usage limits were the most persistent problem. Everyone shares one free-tier Gemini key, so scans would fail with no clear pattern whenever enough people hit it at once. I fixed it in stages: first a queue limiting in-flight requests, then automatic retries with backoff (and respecting the retry-after header when Gemini gave one), then finally surfacing that retry status to the user (“High demand. Retrying (2/3)…”) instead of just showing a dead spinner. The guided camera and push notifications both turned into whole rabbit holes of browser-specific pain (iOS Safari blocking camera/notification permissions unless triggered by a direct tap, no live frame streaming on web so I had to build a custom JS-interop layer from scratch, and push not working on iOS at all unless the site’s added to the home screen firs)t. My favorite bug story: the Match Center’s Events tab would spin forever with zero errors. I burned time adding timeouts and retries that did nothing before realizing the real issue. The spinner wasn’t stuck waiting on the network, it was stuck because nothing ever tried. What am I the most proud of? Going from a single-purpose AI scanner to four genuinely useful, connected tools without the codebase turning into spaghetti. I’m also proud that scans now degrade gracefully under load instead of just failing, and that notifications work reliably even though I had zero experience with service workers or VAPID keys before this. And honestly, just sticking with it. 21 devlogs and three months of real iteration based on actual user feedback instead of giving up. What should people know so they can test your project? Live app: https://mirage54321.github.io/RoboLens/ You can log in as a guest for team 4388 to browse batteries without needing an account. Push notifications currently work reliably on desktop browsers and Android (iOS Safari requires the site to be added to your home screen as a bookmark). You can test this by logging into -4388 (Yes, a negative. I needed a number that wouldn’t have a real team). The AI scan/rules tools need a robot photo to test against; if you don’t have one handy, any well-lit photo of mechanical/electrical components will still show you how the flow works....
|
1792875207.636436
|
1793739207.636436
|
|
30697
|
WorkParcel by @arpitaanuna | Stardance
|
arpitaanuna
|
1
|
10.0
|
180
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T14:53:46Z", "hours": 10.0, "multiplier": 18.0, "payout": 180, "blessing": "neutral", "text": "Shipping WorkParcel! After spending a lot of time designing, coding, testing and fixing things, I am finally shipping WorkParcel! WorkParcel is a Windows productivity app that helps you save everything connected to a particular project or task in one place. Whenever I work on something, I usually have multiple apps, files, folders and useful browser links open. After closing everything, finding and reopening the same setup again becomes really annoying. That is the problem I wanted WorkParcel to solve. With WorkParcel, you can create a parcel, select the apps and windows you are using, add files and folders, save useful web links, and keep everything connected to that work together. When you return later, you can open the parcel and choose which saved items you want to launch again. How it works Create a parcel and give it a name. Select the currently open apps and windows connected to your work. Add any files, folders or web links you need. Save the parcel without moving or copying your actual files. Use Pack Away to request a normal close for the supported windows you selected. Use Open Parcel whenever you want to reopen your saved setup. Creating a parcel does not immediately close everything. Packing Away is a separate action, so the user always controls when the selected setup should be closed. Other features I added WorkParcel also has a to-do list system. Tasks can be connected to a particular parcel, making it easier to remember what needs to be done when returning to that work. The Today page brings these tasks together in one place. Parcels can now be archived when they are no longer actively needed. They remain safely stored in the Archive and can be restored later. Individual items can also be edited or removed from a parcel. Removing a file or folder only removes its saved WorkParcel record—the actual item on the computer is never deleted. If a saved file or folder gets moved, WorkParcel can show that it is unavailable and allow the user to relink it to its new location. Other details in readme. Browser links Web links can be added by pasting one HTTP or HTTPS URL per line. WorkParcel saves these links and opens them in the default Windows browser. If a complete browser window is selected as an open app, Pack Away may close that entire selected window. WorkParcel does not claim to restore browser history, tab groups, page contents or exact window positions. Built with -C# .NET 10 WinUI 3 Windows App SDK SQLite Win32 APIs WorkParcel is now available as a public beta for Windows 10 and Windows 11!! This project went through several different ideas and UI changes, but I eventually kept its main purpose simple: Save the work. Pack it away. Open it when you return. WorkParcel v0.2.0 Beta 3 is officially shipped! And i hope everyone willll loveeeee itt!! cuz i love it tooo and am def gonna use this alot :D", "repo": "https://github.com/arpitaa31/WorkParcel", "demo": "https://github.com/arpitaa31/WorkParcel/releases/tag/v0.2.0-beta.3"}]...
|
[{"post_id": 65394, "ts": "202 [{"post_id": 65394, "ts": "2026-09-10T14:41:57Z", "hours": 2.7092, "text": "Final Devlog - WorkParcel is done! and i am using it now! After spending a lot of time designing, building, testing and fixing WorkParcel, the main version of the app is finally ready! WorkParcel started from a simple problem I kept noticing. Whenever I worked on a project, I had multiple apps, files, folders and useful links open. If I closed everything and returned later, I had to manually find and reopen the whole setup again. That is exactly what WorkParcel is made for. A user can now create a parcel for a task and add the apps, open windows, files, folders and web links connected to it. Creating the parcel keeps the current setup open. Later, the user can use Pack Away to close selected supported application windows and Open Parcel to reopen the saved items. I also added a to-do list feature. Tasks can now be connected to a particular parcel, so the user can remember what needs to be done when returning to that project. These tasks are also available through the Today page, making it easier to see and manage important work. Parcel archiving is working now as well. Item management has also been completed and fixed. Users can remove a particular app, file, folder or link from a parcel, and it disappears from the interface immediately. This only removes the saved WorkParcel record—the original file or folder on the computer is never deleted. Files and folders can also be checked for availability and relinked if their location changes. Web links are saved as normal URLs and open in the default Windows browser. The app does not require any Chrome or Edge extension and does not claim to capture or close individual browser tabs. All parcel information is stored locally using SQLite, so the saved setup remains available after closing and reopening WorkParcel. I also added archive and restore, search, local backups, light and dark themes, and a downloadable Windows installer. WorkParcel is basically a place where you can pack away the digital setup connected to a task and return to it later without searching for everything again. Like, as soon as i completed makin this, I have started usin it! like the besttttt thing i have ever madee."}, {"post_id": 55748, "ts": "2026-08-27T18:42:14Z", "hours": 3.0675, "text": "Devlog 3 — WorkParcel Is Properly Working! After completing the UI, I finally worked on making the main WorkParcel system actually functional. Users can now create a parcel and easily select everything connected to their work setup. WorkParcel can show the apps and windows currently open on the computer, and the user can choose only the particular ones they want to save. Files can be selected using the Windows file picker, and multiple files can be added at once. Complete folders can also be selected, along with useful links, applications and notes. Everything is organised into separate categories with checkboxes, so users remain in control of exactly what gets included. Before packing the parcel, WorkParcel shows a review of the complete selection too!!!!! Once confirmed, all the selected items are packed together and saved locally. The parcel remains available even after WorkParcel or the computer is restarted. When the user returns, they can open the parcel, review everything saved inside it and choose which items they want to reopen. Files open through their regular applications, folders open in File Explorer, links open in the default browser and supported apps can launch again. The Pack Away option also lets users update the parcel whenever their setup changes. New items can be added, old ones can be removed, and the latest version of the workspace can be saved for the next time. Removing something from WorkParcel never deletes the original file or folder from the computer. So WorkParcel has now moved beyond being only a UI prototype—the main system properly works. Apps, files, folders, links and notes can all be selected easily, packed into one parcel and reopened whenever that complete setup is needed again. Now, cuz finally it works, i just need to do some testing and also like I am thinking to add another feature like a exact window layout restoration, so that i can open the whole setup as it is! like if my vs code was on the left side and chrome tab on the right, it would open the same way! Now i just need to figure out how i will make that happen…. lets see!!"}, {"post_id": 53888, "ts": "2026-08-24T16:18:11Z", "hours": 1.4825, "text": "Devlog 2 — WorkParcel UI Complete! Hii! So i am a bit sick, so couldn’t work much today, but I completed working on the UI of WorkParcel and gave it a clean, dark look instead of making it feel like another productivity app. I also organised the whole app properly and added different tabs to the navbar — Parcels, Today, Archive and Settings. The overview of the app The main Parcels page makes it easy to view saved setups, search through them and choose whether to open or pack them away (so that its easy to navigate thru). I also designed the Create New Parcel popup , parcel details screen and the Capture Current Setup flow, where users will be able to select specific apps, windows, browser tabs, files, folders, links and notes they want to save inside a parcel. The Today page has a simple to-do list, while Archive keeps older parcels separate from the main workspace. Mainly completed the visual design and navigation . Next, I’ll connect everything to real local storage so parcels and to-do items stay saved even after restarting the app. Also, I wanna make a few more changes in the UI to make it look a bit more well structured. Soo, stay tuned! :)"}, {"post_id": 52963, "ts": "2026-08-23T10:45:39Z", "hours": 2.7164, "text": "Devlog 1 — Starting WorkParcel I spent some time brainstorming a new project idea and thought about an issue that I, and probably a lot of other devs, face regularly. While workin on a project, we usually have a bunch of specific files, folders, browser tabs, notes, VS Code windows and other apps open. Once we close everything and return later, we have to manually find and reopen the entire setup again. That’s where the idea for WorkParcel came from. What it lets you do WorkParcel will let users create a “parcel” for a task and add everything connected to it. Later, they’ll be able to click Open Parcel and quickly reopen that complete workspace. For the first part, I set up the GitHub repo, connected it to VS Code and initialised the project using C#, .NET 10 and WinUI 3. There isn’t much to visually show yet, but the complete foundation is ready now. Next, I’ll start designing the actual WorkParcel UI. I am so excited to complete making this project, cuz I’d def would want to use this, as it will def be very helpful."}]...
|
Title: WorkParcel by @arpitaanuna | Stardance
Dev Title: WorkParcel by @arpitaanuna | Stardance
Devlogs:
Devlog 1 — Starting WorkParcel I spent some time brainstorming a new project idea and thought about an issue that I, and probably a lot of other devs, face regularly. While workin on a project, we usually have a bunch of specific files, folders, browser tabs, notes, VS Code windows and other apps open. Once we close everything and return later, we have to manually find and reopen the entire setup again. That’s where the idea for WorkParcel came from. What it lets you do WorkParcel will let users create a “parcel” for a task and add everything connected to it. Later, they’ll be able to click Open Parcel and quickly reopen that complete workspace. For the first part, I set up the GitHub repo, connected it to VS Code and initialised the project using C#, .NET 10 and WinUI 3. There isn’t much to visually show yet, but the complete foundation is ready now. Next, I’ll start designing the actual WorkParcel UI. I am so excited to complete making this project, cuz I’d def would want to use this, as it will def be very helpful.
Devlog 2 — WorkParcel UI Complete! Hii! So i am a bit sick, so couldn’t work much today, but I completed working on the UI of WorkParcel and gave it a clean, dark look instead of making it feel like another productivity app. I also organised the whole app properly and added different tabs to the navbar — Parcels, Today, Archive and Settings. The overview of the app The main Parcels page makes it easy to view saved setups, search through them and choose whether to open or pack them away (so that its easy to navigate thru). I also designed the Create New Parcel popup , parcel details screen and the Capture Current Setup flow, where users will be able to select specific apps, windows, browser tabs, files, folders, links and notes they want to save inside a parcel. The Today page has a simple to-do list, while Archive keeps older parcels separate from the main workspace. Mainly completed the visual design and navigation . Next, I’ll connect everything to real local storage so parcels and to-do items stay saved even after restarting the app. Also, I wanna make a few more changes in the UI to make it look a bit more well structured. Soo, stay tuned! :)
Devlog 3 — WorkParcel Is Properly Working! After completing the UI, I finally worked on making the main WorkParcel system actually functional. Users can now create a parcel and easily select everything connected to their work setup. WorkParcel can show the apps and windows currently open on the computer, and the user can choose only the particular ones they want to save. Files can be selected using the Windows file picker, and multiple files can be added at once. Complete folders can also be selected, along with useful links, applications and notes. Everything is organised into separate categories with checkboxes, so users remain in control of exactly what gets included. Before packing the parcel, WorkParcel shows a review of the complete selection too!!!!! Once confirmed, all the selected items are packed together and saved locally. The parcel remains available even after WorkParcel or the computer is restarted. When the user returns, they can open the parcel, review everything saved inside it and choose which items they want to reopen. Files open through their regular applications, folders open in File Explorer, links open in the default browser and supported apps can launch again. The Pack Away option also lets users update the parcel whenever their setup changes. New items can be added, old ones can be removed, and the latest version of the workspace can be saved for the next time. Removing something from WorkParcel never deletes the original file or folder from the computer. So WorkParcel has now moved beyond being only a UI prototype—the main system properly works. Apps, files, folders, links and notes can all be selected easily, packed into one parcel and reopened whenever that complete setup is needed again. Now, cuz finally it works, i just need to do some testing and also like I am thinking to add another feature like a exact window layout restoration, so that i can open the whole setup as it is! like if my vs code was on the left side and chrome tab on the right, it would open the same way! Now i just need to figure out how i will make that happen…. lets see!!
Final Devlog - WorkParcel is done! and i am using it now! After spending a lot of time designing, building, testing and fixing WorkParcel, the main version of the app is finally ready! WorkParcel started from a simple problem I kept noticing. Whenever I worked on a project, I had multiple apps, files, folders and useful links open. If I closed everything and returned later, I had to manually find and reopen the whole setup again. That is exactly what WorkParcel is made for. A user can now create a parcel for a task and add the apps, open windows, files, folders and web links connected to it. Creating the parcel keeps the current setup open. Later, the user can use Pack Away to close selected supported application windows and Open Parcel to reopen the saved items. I also added a to-do list feature. Tasks can now be connected to a particular parcel, so the user can remember what needs to be done when returning to that project. These tasks are also available through the Today page, making it easier to see and manage important work. Parcel archiving is working now as well. Item management has also been completed and fixed. Users can remove a particular app, file, folder or link from a parcel, and it disappears from the interface immediately. This only removes the saved WorkParcel record—the original file or folder on the computer is never deleted. Files and folders can also be checked for availability and relinked if their location changes. Web links are saved as normal URLs and open in the default Windows browser. The app does not require any Chrome or Edge extension and does not claim to capture or close individual browser tabs. All parcel information is stored locally using SQLite, so the saved setup remains available after closing and reopening WorkParcel. I also added archive and restore, search, local backups, light and dark themes, and a downloadable Windows installer. WorkParcel is basically a place where you can pack away the digital setup connected to a task and return to it later without searching for everything again. Like, as soon as i completed makin this, I have started usin it! like the besttttt thing i have ever madee.
Ships:
Shipping WorkParcel! After spending a lot of time designing, coding, testing and fixing things, I am finally shipping WorkParcel! WorkParcel is a Windows productivity app that helps you save everything connected to a particular project or task in one place. Whenever I work on something, I usually have multiple apps, files, folders and useful browser links open. After closing everything, finding and reopening the same setup again becomes really annoying. That is the problem I wanted WorkParcel to solve. With WorkParcel, you can create a parcel, select the apps and windows you are using, add files and folders, save useful web links, and keep everything connected to that work together. When you return later, you can open the parcel and choose which saved items you want to launch again. How it works Create a parcel and give it a name. Select the currently open apps and windows connected to your work. Add any files, folders or web links you need. Save the parcel without moving or copying your actual files. Use Pack Away to request a normal close for the supported windows you selected. Use Open Parcel whenever you want to reopen your saved setup. Creating a parcel does not immediately close everything. Packing Away is a separate action, so the user always controls when the selected setup should be closed. Other features I added WorkParcel also has a to-do list system. Tasks can be connected to a particular parcel, making it easier to remember what needs to be done when returning to that work. The Today page brings these tasks together in one place. Parcels can now be archived when they are no longer actively needed. They remain safely stored in the Archive and can be restored later. Individual items can also be edited or removed from a parcel. Removing a file or folder only removes its saved WorkParcel record—the actual item on the computer is never deleted. If a saved file or folder gets moved, WorkParcel can show that it is unavailable and allow the user to relink it to its new location. Other details in readme. Browser links Web links can be added by pasting one HTTP or HTTPS URL per line. WorkParcel saves these links and opens them in the default Windows browser. If a complete browser window is selected as an open app, Pack Away may close that entire selected window. WorkParcel does not claim to restore browser history, tab groups, page contents or exact window positions. Built with -C# .NET 10 WinUI 3 Windows App SDK SQLite Win32 APIs WorkParcel is now available as a public beta for Windows 10 and Windows 11!! This project went through several different ideas and UI changes, but I eventually kept its main purpose simple: Save the work. Pack it away. Open it when you return. WorkParcel v0.2.0 Beta 3 is officially shipped! And i hope everyone willll loveeeee itt!! cuz i love it tooo and am def gonna use this alot :D...
|
1793350289.6648715
|
1793436689.6648715
|
|
56729
|
Kamino by @machubagel | Stardance
|
machubagel
|
0
|
6.83
|
0
|
[]
|
[{"post_id": 65405, "ts": "202 [{"post_id": 65405, "ts": "2026-09-10T14:59:43Z", "hours": 6.8336, "text": "I have been doing this project i call Kamino. I have set up four instances or agents of claude code ai. I’ve given them their own independent devices and their own names being Rex (main computer, mini PC), Fives (laptop, most used), Heavy (home PC), and Echo (raspberry Pi, constant running agent). You get the reference now. Before this bulk of work, I had ordered the components to start on Echo as he was set up to be the admin for the other three in a way. With Echo running 24/7, he looks through the shared directories of his brothers (through rclone/google drive) and flags any conflicting memories, and false beliefs and works as a communication point between the brothers. With an old Raspberry Pi 3b v 1.2, a UPS hat and a bundle of hope, I got it working through a bad addiction to energy drinks and massive support from Echo’s brothers. The idea in my head is that by connecting multiple Claude instances that have different personalities from working in vastly different ways, and having them communicate with one another while being forced to constantly agree or contest against one an others beliefs and understandings, i gain a boost in performance with working on projects that require AI input or just genuine queries that i may have. Anyways, besides the nerdy side of things, I like putting complected Lego together so i wanted to use the raspberry Pi for something. The UPS works really well (will stop my Pi from dying when the power cuts) and I plan to upgrade Echo more with increase of NAS storage, a mini keyboard, a 5’ inch display that’s on its way, proper communication between AI instances as well as me and lastly, a better Pi/mini PC when I find some money laying around. Thank you very much for reading if you have done so and I hope my first post isn’t so boring :p"}]...
|
Title: Kamino by @machubagel | Stardance
Devlogs: Title: Kamino by @machubagel | Stardance
Devlogs:
I have been doing this project i call Kamino. I have set up four instances or agents of claude code ai. I’ve given them their own independent devices and their own names being Rex (main computer, mini PC), Fives (laptop, most used), Heavy (home PC), and Echo (raspberry Pi, constant running agent). You get the reference now. Before this bulk of work, I had ordered the components to start on Echo as he was set up to be the admin for the other three in a way. With Echo running 24/7, he looks through the shared directories of his brothers (through rclone/google drive) and flags any conflicting memories, and false beliefs and works as a communication point between the brothers. With an old Raspberry Pi 3b v 1.2, a UPS hat and a bundle of hope, I got it working through a bad addiction to energy drinks and massive support from Echo’s brothers. The idea in my head is that by connecting multiple Claude instances that have different personalities from working in vastly different ways, and having them communicate with one another while being forced to constantly agree or contest against one an others beliefs and understandings, i gain a boost in performance with working on projects that require AI input or just genuine queries that i may have. Anyways, besides the nerdy side of things, I like putting complected Lego together so i wanted to use the raspberry Pi for something. The UPS works really well (will stop my Pi from dying when the power cuts) and I plan to upgrade Echo more with increase of NAS storage, a mini keyboard, a 5’ inch display that’s on its way, proper communication between AI instances as well as me and lastly, a better Pi/mini PC when I find some money laying around. Thank you very much for reading if you have done so and I hope my first post isn’t so boring :p...
|
1793397121.2526307
|
1794001921.2526307
|
|
56883
|
VIE-Airport by @lukas_56376 | Stardance
|
lukas_56376
|
1
|
12.22
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T13:25:21Z", "hours": 8.0, "multiplier": 2.03, "payout": 16, "blessing": "neutral", "text": "VIE-Airport is a live dashboard for Vienna International Airport (VIE/LOWW). It shows real-time arrivals and departures from the official airport flight monitor, plus current METAR and TAF weather from NOAA. You can search flights, switch between arrivals, departures and airport info, and see runway wind components calculated from the live METAR. All times are in Austrian local time; the data is for information only and not for operational flight planning.", "repo": "https://github.com/Lukas-56376/VIE-Airport", "demo": "https://lukas-56376.github.io/VIE-Airport/"}]...
|
[{"post_id": 65418, "ts": "202 [{"post_id": 65418, "ts": "2026-09-10T15:25:50Z", "hours": 0.8903, "text": "Added a proper dark/light theme toggle so the board matches both the screenshots and everyday use. The preference is stored in localStorage and respects the system setting on first visit, with no flash of the wrong theme. I also cleaned up the visual hierarchy clearer table rows, better contrast on status pills, and calmer spacing around the filters — so the UI feels less busy in both modes. Took about 1 hour and makes the dashboard much more comfortable to use day or night."}, {"post_id": 60432, "ts": "2026-09-02T19:12:35Z", "hours": 0.3975, "text": "Improved the search and filtering experience based on feedback. The search field now only looks at flight number, airline and city instead of matching against status text as well. I also added a status filter (on time, delayed, landed/departed, cancelled) and sorting options by time, status or city so the board is much easier to scan. This took about 1 hour (sadly forgot to turn on Hakatime so only 22 minutes counted) , I know right and makes the list feel a lot more useful in everyday use and a small redesign to black theme (for now…) only and making it more pop style!"}, {"post_id": 59984, "ts": "2026-09-02T02:10:24Z", "hours": 0.775, "text": "Wow, again a new Design!"}, {"post_id": 59839, "ts": "2026-09-01T20:17:19Z", "hours": 2.1594, "text": "OMG, is that a new Design? Yes, it is"}, {"post_id": 59463, "ts": "2026-09-01T10:23:43Z", "hours": 8.0322, "text": "This is V1 of VIE-Airport a real time synched (via API keys) information about Vienna International Airport!"}]...
|
Title: VIE-Airport by @lukas_56376 | Stardance
De Title: VIE-Airport by @lukas_56376 | Stardance
Devlogs:
This is V1 of VIE-Airport a real time synched (via API keys) information about Vienna International Airport!
OMG, is that a new Design? Yes, it is
Wow, again a new Design!
Improved the search and filtering experience based on feedback. The search field now only looks at flight number, airline and city instead of matching against status text as well. I also added a status filter (on time, delayed, landed/departed, cancelled) and sorting options by time, status or city so the board is much easier to scan. This took about 1 hour (sadly forgot to turn on Hakatime so only 22 minutes counted) , I know right and makes the list feel a lot more useful in everyday use and a small redesign to black theme (for now…) only and making it more pop style!
Added a proper dark/light theme toggle so the board matches both the screenshots and everyday use. The preference is stored in localStorage and respects the system setting on first visit, with no flash of the wrong theme. I also cleaned up the visual hierarchy clearer table rows, better contrast on status pills, and calmer spacing around the filters — so the UI feels less busy in both modes. Took about 1 hour and makes the dashboard much more comfortable to use day or night.
Ships:
VIE-Airport is a live dashboard for Vienna International Airport (VIE/LOWW). It shows real-time arrivals and departures from the official airport flight monitor, plus current METAR and TAF weather from NOAA. You can search flights, switch between arrivals, departures and airport info, and see runway wind components calculated from the live METAR. All times are in Austrian local time; the data is for information only and not for operational flight planning....
|
1792875202.7097607
|
1793739202.7097607
|
|
57557
|
Solar Plant calculator by @Emanuela | Stardance
|
Emanuela
|
0
|
1.14
|
0
|
[]
|
[{"post_id": 65419, "ts": "202 [{"post_id": 65419, "ts": "2026-09-10T15:26:24Z", "hours": 0.4139, "text": "I tried doing some work but I need to figure out a problem with wiring the buttons"}, {"post_id": 62195, "ts": "2026-09-05T13:45:15Z", "hours": 0.7253, "text": "STARTING OUT NEW PROJECT I found this old problem we did at school were we found out how many solar panel we would need to substain our house. So I turned it into a calculator were you enter all the data and spit out how many you would need today I only did the overlay"}]...
|
Title: Solar Plant calculator by @Emanuela | Stard Title: Solar Plant calculator by @Emanuela | Stardance
Devlogs:
STARTING OUT NEW PROJECT I found this old problem we did at school were we found out how many solar panel we would need to substain our house. So I turned it into a calculator were you enter all the data and spit out how many you would need today I only did the overlay
I tried doing some work but I need to figure out a problem with wiring the buttons...
|
1793444084.7097871
|
1794048884.7097871
|
|
16027
|
Variable Ratio Gearbox by @featurescript | Stardan Variable Ratio Gearbox by @featurescript | Stardance...
|
featurescript
|
0
|
1.53
|
0
|
[]
|
[{"post_id": 6542, "ts": "2026 [{"post_id": 6542, "ts": "2026-06-11T00:02:06Z", "hours": 1.5272, "text": "Created a v1 simulation for the math and energy analysis of different types of gearboxes to confirm the usecases of a variable ratio gearbox like a CVT or shifting gearbox. Surprisingly found that the benefits are actually very small (if any) in mechanisms like drivetrains or fast lifts, because the sprint distance is so short that a shift in gear ratio doesn’t even make sense for a motor to accomplish. I am not quite sure if my algorithms to determine when to switch are perfectly accurate, so I will do a deeper dive into that (hence the export feature), but this got me a very important takeaway: the mechanism to be limited by the actual ends of the ratios (e.g. stalling or running at max speed), otherwise even though motors are inefficient and suboptimal at different moments, a single gear ratio actually suffices."}]...
|
Title: Variable Ratio Gearbox by @featurescript | Title: Variable Ratio Gearbox by @featurescript | Stardance
Devlogs:
Created a v1 simulation for the math and energy analysis of different types of gearboxes to confirm the usecases of a variable ratio gearbox like a CVT or shifting gearbox. Surprisingly found that the benefits are actually very small (if any) in mechanisms like drivetrains or fast lifts, because the sprint distance is so short that a shift in gear ratio doesn’t even make sense for a motor to accomplish. I am not quite sure if my algorithms to determine when to switch are perfectly accurate, so I will do a deeper dive into that (hence the export feature), but this got me a very important takeaway: the mechanism to be limited by the actual ends of the ratios (e.g. stalling or running at max speed), otherwise even though motors are inefficient and suboptimal at different moments, a single gear ratio actually suffices....
|
1793192014.8023186
|
1793796814.8023186
|
|
17274
|
My neovim config by @Tuxilio | Stardance
|
Tuxilio
|
2
|
17.0
|
77
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T15:41:21Z", "hours": 7.0, "multiplier": 6.51, "payout": 44, "blessing": "neutral", "text": "I built a fully customized, lightweight neovim config. It’s my first time I configured my neovim and its simple and just have some main feature of an ide. It’s NOT a full vscode config. The difference between neovim and e.g. vscode is that neovim *or vim in general) gives you the freedom to make it look a little diffrent from the others. I did it mainly because I wanted a nice editor but also for fun :) It’s my first time configuring neovim so I used the docs a lot and tried a lot of things. You can look at some screenshots in the devlog or try it out by yourself :) If you’re new to vi/vim/neovim, it is a terminal-based editor. You can press Esc and then :q to exit. If you want to see a transparent background, you need a terminal with a transparency option configured. My neovim is just configured to have a transparent background but if your terminal is just black you won’t really see an effect ;) The main difference to the first ship is that I removed some dependencies on my nixos neovim config so it is a LOT smaller but that was more difficult than I thought so it took 6 whole hours :/", "repo": "https://codeberg.org/Tuxilio/nixos", "demo": "https://codeberg.org/Tuxilio/nixos/src/branch/main/docs/nvim.md#usage"}, {"ship_num": 2, "ts": "2026-08-25T18:18:25Z", "hours": 10.0, "multiplier": 6.79, "payout": 33, "blessing": "neutral", "text": "I built a fully customized, lightweight neovim config. It’s my first time I configured my neovim and its simple and just have some main feature of an ide. It’s NOT a full vscode config. I did it mainly because I wanted a nice editor but also for fun :) It’s my first time configuring neovim so I used the docs a lot and tried a lot of things. You can look at some screenshots in the devlog or try it out by yourself :) If you’re new to vi/vim/neovim, it is a terminal-based editor. You can press Esc and then :q to exit. If you want to see a transparent background, you need a terminal with a transparency option configured. My neovim is just configured to have a transparent background but if your terminal is just black you won’t really see an effect ;)", "repo": "https://codeberg.org/Tuxilio/nixos", "demo": "https://codeberg.org/Tuxilio/nixos/src/branch/main/docs/nvim.md#usage"}]...
|
[{"post_id": 65425, "ts": "202 [{"post_id": 65425, "ts": "2026-09-10T15:37:37Z", "hours": 5.3036, "text": "I refactored my whole nixos config and removed another dependency, flake-parts , so that users need to download less dependencies! The project is now much smaller and still works exactly the same :) This was really complicated because I had to rewrite nearly everything so it took a really long time (5 hours)"}, {"post_id": 57136, "ts": "2026-08-29T07:34:33Z", "hours": 1.5314, "text": "I removed the import-tree dependency in my nixos config so users need to download less inputs 🎉 It took some time because it was a bit difficult to reimport each file but I did it :)"}, {"post_id": 54665, "ts": "2026-08-25T18:13:19Z", "hours": 1.0836, "text": "I added a lot docs so it is a lot easier to setup and understand :)"}, {"post_id": 54539, "ts": "2026-08-25T15:50:46Z", "hours": 2.3975, "text": "I added lsp (language server protocol) configs to my neovim config. Using this I can get linting and autocompletions. I also migrated from nvim-cmp to blink.cmp for completions, because I couldn’t get nvim-cmp to work… blink-cmp works well. In the picture you can see the completion and docs window. I currently got the problem that the docs window isn’t transparent but I couldn’t fix that. I already tried this: https://codeberg.org/Tuxilio/nixos/commit/d68a3de50786da3b3bc2f6aaeb9d2b88147a1a9f (commented out because it doesn’t worked; it just hides the complete completion window) so if you have ideas please tell me :) (The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl [email protected] and licensed CC-BY-SA 4.0. Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree . My screenshot is licensed CC-BY-SA 4.0 .)"}, {"post_id": 52912, "ts": "2026-08-23T09:10:33Z", "hours": 0.4442, "text": "I just packaged my config using nix! You can now run nix run git+https://codeberg.org/tuxilio/nixos#neovim to run my full editor! (The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl [email protected] and licensed CC-BY-SA 4.0. Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree . My screenshot is licensed CC-BY-SA 4.0.)"}, {"post_id": 52862, "ts": "2026-08-23T07:15:47Z", "hours": 5.6083, "text": "I started creating my own neovim config! Currently, I use lazy.nvim as the plugin manager to install the following plugins: a catpuccin colorscheme, gitsigns (as you can see in the image on the left; to display not committed / added / changed … lines on the left), wakatime, cmp for suggestions, indent-blankline to determine and set 2 or 4 spaces for one tab, an lsp, nonels for formatting, notify and fidget-nvim for notifications and status updates inside neovim, telescope for searching and treesitter for syntax hightlighting. Quite a lot, and I forgot to add a devlog before because I was tinkering a lot xD I also used Mason.nvim before for automatically installing LSP, but I now do that system wide. The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl < [email protected] > and licensed CC-BY-SA 4.0 . Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree My screenshot is licensed CC-BY-SA 4.0 ."}]...
|
Title: My neovim config by @Tuxilio | Stardance
D Title: My neovim config by @Tuxilio | Stardance
Devlogs:
I started creating my own neovim config! Currently, I use lazy.nvim as the plugin manager to install the following plugins: a catpuccin colorscheme, gitsigns (as you can see in the image on the left; to display not committed / added / changed … lines on the left), wakatime, cmp for suggestions, indent-blankline to determine and set 2 or 4 spaces for one tab, an lsp, nonels for formatting, notify and fidget-nvim for notifications and status updates inside neovim, telescope for searching and treesitter for syntax hightlighting. Quite a lot, and I forgot to add a devlog before because I was tinkering a lot xD I also used Mason.nvim before for automatically installing LSP, but I now do that system wide. The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl < [email protected] > and licensed CC-BY-SA 4.0 . Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree My screenshot is licensed CC-BY-SA 4.0 .
I just packaged my config using nix! You can now run nix run git+https://codeberg.org/tuxilio/nixos#neovim to run my full editor! (The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl [email protected] and licensed CC-BY-SA 4.0. Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree . My screenshot is licensed CC-BY-SA 4.0.)
I added lsp (language server protocol) configs to my neovim config. Using this I can get linting and autocompletions. I also migrated from nvim-cmp to blink.cmp for completions, because I couldn’t get nvim-cmp to work… blink-cmp works well. In the picture you can see the completion and docs window. I currently got the problem that the docs window isn’t transparent but I couldn’t fix that. I already tried this: https://codeberg.org/Tuxilio/nixos/commit/d68a3de50786da3b3bc2f6aaeb9d2b88147a1a9f (commented out because it doesn’t worked; it just hides the complete completion window) so if you have ideas please tell me :) (The background image, visible because my neovim background is transparent and my shell halve-transparent, is the KDE Plasma workspace wallpaper “Scarlet tree” made by axo1otl [email protected] and licensed CC-BY-SA 4.0. Repo: https://invent.kde.org/plasma/plasma-workspace-wallpapers/-/tree/master/ScarletTree . My screenshot is licensed CC-BY-SA 4.0 .)
I added a lot docs so it is a lot easier to setup and understand :)
I removed the import-tree dependency in my nixos config so users need to download less inputs 🎉 It took some time because it was a bit difficult to reimport each file but I did it :)
I refactored my whole nixos config and removed another dependency, flake-parts , so that users need to download less dependencies! The project is now much smaller and still works exactly the same :) This was really complicated because I had to rewrite nearly everything so it took a really long time (5 hours)
Ships:
I built a fully customized, lightweight neovim config. It’s my first time I configured my neovim and its simple and just have some main feature of an ide. It’s NOT a full vscode config. I did it mainly because I wanted a nice editor but also for fun :) It’s my first time configuring neovim so I used the docs a lot and tried a lot of things. You can look at some screenshots in the devlog or try it out by yourself :) If you’re new to vi/vim/neovim, it is a terminal-based editor. You can press Esc and then :q to exit. If you want to see a transparent background, you need a terminal with a transparency option configured. My neovim is just configured to have a transparent background but if your terminal is just black you won’t really see an effect ;)
I built a fully customized, lightweight neovim config. It’s my first time I configured my neovim and its simple and just have some main feature of an ide. It’s NOT a full vscode config. The difference between neovim and e.g. vscode is that neovim *or vim in general) gives you the freedom to make it look a little diffrent from the others. I did it mainly because I wanted a nice editor but also for fun :) It’s my first time configuring neovim so I used the docs a lot and tried a lot of things. You can look at some screenshots in the devlog or try it out by yourself :) If you’re new to vi/vim/neovim, it is a terminal-based editor. You can press Esc and then :q to exit. If you want to see a transparent background, you need a terminal with a transparency option configured. My neovim is just configured to have a transparent background but if your terminal is just black you won’t really see an effect ;) The main difference to the first ship is that I removed some dependencies on my nixos neovim config so it is a LOT smaller but that was more difficult than I thought so it took 6 whole hours :/...
|
1793508534.6510956
|
1793594934.6510956
|
|
58881
|
Witcher | WebOS 1 by @karoltoo11 | Stardance
|
karoltoo11
|
1
|
3.54
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T15:43:58Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? It made a fully custom (and in some way castomable) website based on Witcher 3: Wild Hunt universe. Also on other parts of games and books. I built it using: HTML, CCS and Javascript . It was my second time using this langues that much. I really wasn’t using them that much before. I’m happy that I hade a chance to do this. What was challenging? This was completly new form of work for me. Like, yea I created sites before, but they were meant to look like sitI made a builded in local audio player named Dandelion’s Lute after one of character from book.es, not Operating Systems. I think that getting out of that type of thinking that I am creating a website. What are you proud of? Of course I’m proud of myself! Probably the most of local audio player named Dandelion’s Lute after one of character from book. What should people know to test your project? Just click this link: https://karoltoo11.github.io/witcherwebos/", "repo": "https://github.com/karoltoo11/witcherwebos", "demo": "https://karoltoo11.github.io/witcherwebos/"}]...
|
[{"post_id": 65436, "ts": "202 [{"post_id": 65436, "ts": "2026-09-10T15:57:46Z", "hours": 0.5389, "text": "Devlog Number 4 Today I made a callendar located in Witcher 3 Times. You can acess it by clicking on the timer. Also: Fixed some small, very small bugs I saw"}, {"post_id": 64277, "ts": "2026-09-08T15:39:17Z", "hours": 0.6706, "text": "Devlog Number 3 Today I made a fully working audio player with 5 orginal songs from The Witcher 3: Wild Hunt Silver for monsters Kear Morhen Steel for Humans Geralt of Rivia Wilcza zamieć (The wolven storm) Polish Version Also: Added/Fixed option to customize wallpaper and color theme. Create new option that allows you to change System clock and Time Display You can see a working audio player on the video!"}, {"post_id": 63605, "ts": "2026-09-07T15:11:33Z", "hours": 0.5781, "text": "Devlog Number 2 Today I made some progress and tidied a few things up . Specifically: Added a job system and a currency. Added settings with options to change the background, etc. I fixed: An issue where windows moved very slowly; the movement wasn’t smooth and was just annoying. The inability to close or minimize windows. The buttons were purely decorative before, but not anymore. You can see a demonstration of everything I fixed in the video. I’ve also included a snippet of the code. I’m writing everything in Visual Studio Code !"}, {"post_id": 62948, "ts": "2026-09-06T14:33:52Z", "hours": 1.6669, "text": "Devlog Number 1 I’m currently creating my own operating system based on The Witcher universe. Especifically, the third game, The Witcher 3: Wild Hunt . I’ve managed to build a working bestiary application. In the future, I plan to add: Contract boards An alchemy guide Gwent A music player featuring tracks from the game, like “Silver for Monsters” If you have any other suggestions, please let me know! PS. The browser component is going to be removed! (Also site is “larger” I just zoomed to 200%)"}]...
|
Title: Witcher | WebOS 1 by @karoltoo11 | Stardanc Title: Witcher | WebOS 1 by @karoltoo11 | Stardance
Devlogs:
Devlog Number 1 I’m currently creating my own operating system based on The Witcher universe. Especifically, the third game, The Witcher 3: Wild Hunt . I’ve managed to build a working bestiary application. In the future, I plan to add: Contract boards An alchemy guide Gwent A music player featuring tracks from the game, like “Silver for Monsters” If you have any other suggestions, please let me know! PS. The browser component is going to be removed! (Also site is “larger” I just zoomed to 200%)
Devlog Number 2 Today I made some progress and tidied a few things up . Specifically: Added a job system and a currency. Added settings with options to change the background, etc. I fixed: An issue where windows moved very slowly; the movement wasn’t smooth and was just annoying. The inability to close or minimize windows. The buttons were purely decorative before, but not anymore. You can see a demonstration of everything I fixed in the video. I’ve also included a snippet of the code. I’m writing everything in Visual Studio Code !
Devlog Number 3 Today I made a fully working audio player with 5 orginal songs from The Witcher 3: Wild Hunt Silver for monsters Kear Morhen Steel for Humans Geralt of Rivia Wilcza zamieć (The wolven storm) Polish Version Also: Added/Fixed option to customize wallpaper and color theme. Create new option that allows you to change System clock and Time Display You can see a working audio player on the video!
Devlog Number 4 Today I made a callendar located in Witcher 3 Times. You can acess it by clicking on the timer. Also: Fixed some small, very small bugs I saw
Ships:
What did you make? It made a fully custom (and in some way castomable) website based on Witcher 3: Wild Hunt universe. Also on other parts of games and books. I built it using: HTML, CCS and Javascript . It was my second time using this langues that much. I really wasn’t using them that much before. I’m happy that I hade a chance to do this. What was challenging? This was completly new form of work for me. Like, yea I created sites before, but they were meant to look like sitI made a builded in local audio player named Dandelion’s Lute after one of character from book.es, not Operating Systems. I think that getting out of that type of thinking that I am creating a website. What are you proud of? Of course I’m proud of myself! Probably the most of local audio player named Dandelion’s Lute after one of character from book. What should people know to test your project? Just click this link: https://karoltoo11.github.io/witcherwebos/...
|
1793501572.2554774
|
1793587972.2554774
|
|
43943
|
Audio Amplifier V1 by @Stylt | Stardance
|
Stylt
|
0
|
13.24
|
0
|
[]
|
[{"post_id": 65438, "ts": "202 [{"post_id": 65438, "ts": "2026-09-10T15:59:48Z", "hours": 0.4667, "text": "!!!PCBs arrived!!! -PCB look good clean -the only problem is I don’t have the PAM8610 IC so is there a way a I could get funding second time (already returned the first card)"}, {"post_id": 42805, "ts": "2026-08-07T18:29:32Z", "hours": 2.1669, "text": "Devlog #4 -polished up GitHub repo"}, {"post_id": 41936, "ts": "2026-08-06T13:49:11Z", "hours": 6.7333, "text": "Devlog #3 Today did a load of work: -Changed schematic a bit -Completed pcb layout -Routed pcb -Silkscreen work Next writing README on GitHub"}, {"post_id": 41305, "ts": "2026-08-05T13:28:16Z", "hours": 3.2336, "text": "Devlog #2 -added volume to block diagram -finished entire schematic -next assigning footprints"}, {"post_id": 40915, "ts": "2026-08-04T19:02:40Z", "hours": 0.6389, "text": "Devlog 1# -Made block diagram -Searched components"}]...
|
Title: Audio Amplifier V1 by @Stylt | Stardance
D Title: Audio Amplifier V1 by @Stylt | Stardance
Devlogs:
Devlog 1# -Made block diagram -Searched components
Devlog #2 -added volume to block diagram -finished entire schematic -next assigning footprints
Devlog #3 Today did a load of work: -Changed schematic a bit -Completed pcb layout -Routed pcb -Silkscreen work Next writing README on GitHub
Devlog #4 -polished up GitHub repo
!!!PCBs arrived!!! -PCB look good clean -the only problem is I don’t have the PAM8610 IC so is there a way a I could get funding second time (already returned the first card)...
|
1793245726.2559164
|
1793850526.2559164
|
|
13849
|
x3x1 by @Leah | Stardance
|
Leah
|
0
|
1.22
|
0
|
[]
|
[{"post_id": 6544, "ts": "2026 [{"post_id": 6544, "ts": "2026-06-11T00:04:36Z", "hours": 1.2208, "text": "Added initial commands and tested it works!"}]...
|
Title: x3x1 by @Leah | Stardance
Devlogs:
Added i Title: x3x1 by @Leah | Stardance
Devlogs:
Added initial commands and tested it works!...
|
1793285471.4820423
|
1793890271.4820423
|
|
58611
|
Personal-Site by @Duxredux | Stardance
|
Duxredux
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T16:28:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my very own Personal Website. It features a simple Linux terminal styled layout because I love Linux terminals. A few deatails about myself and a typewriter animation for the header line. It is pretty basic website made with HTML and CSS. Hope you like the design because I spent a lot of time personally to select all the colours and schemes. Used a bit of AI recommendation for the color schemes as I am really bad with colours and couldn’t find the exact colours", "repo": "https://github.com/Sohan-r07/Personal-Site", "demo": "https://sohan-r07.github.io/Personal-Site/"}]...
|
[{"post_id": 65440, "ts": "202 [{"post_id": 65440, "ts": "2026-09-10T16:01:58Z", "hours": 0.7661, "text": "Added the Footer styling and a projects section that displays all my ongoing projects. Pretty pleased with what I have come up with."}, {"post_id": 63685, "ts": "2026-09-07T16:51:19Z", "hours": 0.4728, "text": "Worked a lot on the UI, Changed it from looking like a generic website to a linux shell style because I like Linux shells a lot. A few more additions ill add later to finish it off. Logging off for the night!"}, {"post_id": 63589, "ts": "2026-09-07T14:46:38Z", "hours": 0.6728, "text": "Worked on the Basic Structure of the Website, Its still incomplete but the basic layout looks good"}]...
|
Title: Personal-Site by @Duxredux | Stardance
Dev Title: Personal-Site by @Duxredux | Stardance
Devlogs:
Worked on the Basic Structure of the Website, Its still incomplete but the basic layout looks good
Worked a lot on the UI, Changed it from looking like a generic website to a linux shell style because I like Linux shells a lot. A few more additions ill add later to finish it off. Logging off for the night!
Added the Footer styling and a projects section that displays all my ongoing projects. Pretty pleased with what I have come up with.
Ships:
This is my very own Personal Website. It features a simple Linux terminal styled layout because I love Linux terminals. A few deatails about myself and a typewriter animation for the header line. It is pretty basic website made with HTML and CSS. Hope you like the design because I spent a lot of time personally to select all the colours and schemes. Used a bit of AI recommendation for the color schemes as I am really bad with colours and couldn’t find the exact colours...
|
1793350498.0309412
|
1793436898.0309412
|
|
59330
|
loom web os by @realguyxgammer | Stardance
|
realguyxgammer
|
0
|
2.35
|
0
|
[]
|
[{"post_id": 65446, "ts": "202 [{"post_id": 65446, "ts": "2026-09-10T16:11:09Z", "hours": 0.8628, "text": "coded alot of new things yeah it may look ai cause i did the ui by codex and gemini but coded the backend and frontend by myself. I added tab management to it, search bar, and a feature to connect with people and have some fun too right i am working on making a 1m parameter ai that would take abit of space from that expensive storage and ram but would run locally i saw a tutorial how to do it but lets see if i can code it cause i am newbie lol nvm this is what i have added here"}, {"post_id": 64778, "ts": "2026-09-09T13:06:58Z", "hours": 0.3397, "text": "just made the dashboard for loom os and added few features like notes date and time and also custome wallpapers and cursors i want it be very user friendly as a windows user lol"}, {"post_id": 64157, "ts": "2026-09-08T11:27:29Z", "hours": 1.15, "text": "just made the logging screen for my os this thing took longer than expected but i am new to html so yeah pls leave a suggestion down there so i can add things in it cause my brain is just potatoes lol"}]...
|
Title: loom web os by @realguyxgammer | Stardance
Title: loom web os by @realguyxgammer | Stardance
Devlogs:
just made the logging screen for my os this thing took longer than expected but i am new to html so yeah pls leave a suggestion down there so i can add things in it cause my brain is just potatoes lol
just made the dashboard for loom os and added few features like notes date and time and also custome wallpapers and cursors i want it be very user friendly as a windows user lol
coded alot of new things yeah it may look ai cause i did the ui by codex and gemini but coded the backend and frontend by myself. I added tab management to it, search bar, and a feature to connect with people and have some fun too right i am working on making a 1m parameter ai that would take abit of space from that expensive storage and ram but would run locally i saw a tutorial how to do it but lets see if i can code it cause i am newbie lol nvm this is what i have added here...
|
1792939748.4731548
|
1793803748.4731548
|
|
58952
|
My own site! by @kajamaniyograj | Stardance
|
kajamaniyograj
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T14:00:05Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i used ai but i tryed my best to complete this project", "repo": "https://github.com/kajamaniyograj-cyber/personal-site", "demo": "https://kajamaniyograj-cyber.github.io/personal-site"}]...
|
[{"post_id": 65448, "ts": "202 [{"post_id": 65448, "ts": "2026-09-10T16:15:50Z", "hours": 0.4186, "text": "added standoffs to hold the display in place. With this the project is finally complete(atleast i hope so:)"}]...
|
Title: My own site! by @kajamaniyograj | Stardance Title: My own site! by @kajamaniyograj | Stardance
Devlogs:
added standoffs to hold the display in place. With this the project is finally complete(atleast i hope so:)
Ships:
i used ai but i tryed my best to complete this project...
|
1793350657.4205222
|
1793437057.4205222
|
|
58596
|
WAR ZONE by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
0
|
39.16
|
0
|
[]
|
[{"post_id": 65450, "ts": "202 [{"post_id": 65450, "ts": "2026-09-10T16:17:10Z", "hours": 8.0953, "text": "180 games to play game with that space small rocket"}, {"post_id": 65145, "ts": "2026-09-10T02:43:41Z", "hours": 9.3353, "text": "space war 180 game to play game like fight with others"}, {"post_id": 63446, "ts": "2026-09-07T09:28:18Z", "hours": 1.3131, "text": "just now complete my interface"}, {"post_id": 62635, "ts": "2026-09-06T03:07:04Z", "hours": 3.165, "text": "iam crate more better game"}, {"post_id": 62241, "ts": "2026-09-05T14:47:51Z", "hours": 17.2478, "text": "few houres back iam started my new project name is WAR ZONE game to play game like 360 war games and"}]...
|
Title: WAR ZONE by @Tallurisaikumar | Stardance
D Title: WAR ZONE by @Tallurisaikumar | Stardance
Devlogs:
few houres back iam started my new project name is WAR ZONE game to play game like 360 war games and
iam crate more better game
just now complete my interface
space war 180 game to play game like fight with others
180 games to play game with that space small rocket...
|
1792936104.257238
|
1793800104.257238
|
|
60594
|
WebOS 1 Dipargu by @dipargu | Stardance
|
dipargu
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T16:28:59Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a “OS” that have 3 basic functions hour chronometer and calculator you can close the bottom bar. The difficult thing is the fact that i don’t have that much time on VS. I had help from Gemini on things like the chronometer and on the calculator. Thanks for your time.", "repo": "https://github.com/dipargu/WebOS-1-Stardance", "demo": "https://dipargu.github.io/diparguOS/"}]...
|
[{"post_id": 65452, "ts": "202 [{"post_id": 65452, "ts": "2026-09-10T16:18:05Z", "hours": 0.6358, "text": "Added a calc and a chronometer"}, {"post_id": 65424, "ts": "2026-09-10T15:37:11Z", "hours": 0.2556, "text": "I was happy because this is my first time but i saw others and i felt humiliated"}, {"post_id": 65410, "ts": "2026-09-10T15:04:09Z", "hours": 0.2681, "text": "It’s almost ready after more than two hours."}, {"post_id": 65396, "ts": "2026-09-10T14:46:07Z", "hours": 1.0242, "text": "The web starts to look better i understant better the easy things"}, {"post_id": 65366, "ts": "2026-09-10T13:41:41Z", "hours": 0.4931, "text": "Learned how to use VS and git push git add…"}, {"post_id": 65325, "ts": "2026-09-10T12:17:54Z", "hours": 0.0, "text": "My first proyect Hey everyone, I just started with Stardance and I’m working on WebOS 1, but when I open a codespace, my work isn’t being saved to the GitHub repository. I need help figuring this out; I’m new to this. Does anyone know how to do it or have a guide? Any help is appreciated."}]...
|
Title: WebOS 1 Dipargu by @dipargu | Stardance
De Title: WebOS 1 Dipargu by @dipargu | Stardance
Devlogs:
My first proyect Hey everyone, I just started with Stardance and I’m working on WebOS 1, but when I open a codespace, my work isn’t being saved to the GitHub repository. I need help figuring this out; I’m new to this. Does anyone know how to do it or have a guide? Any help is appreciated.
Learned how to use VS and git push git add…
The web starts to look better i understant better the easy things
It’s almost ready after more than two hours.
I was happy because this is my first time but i saw others and i felt humiliated
Added a calc and a chronometer
Ships:
I made a “OS” that have 3 basic functions hour chronometer and calculator you can close the bottom bar. The difficult thing is the fact that i don’t have that much time on VS. I had help from Gemini on things like the chronometer and on the calculator. Thanks for your time....
|
1793411673.155841
|
1793498073.155841
|
|
60055
|
Drift King by @ahmad_abdalbaset | Stardance
|
ahmad_abdalbaset
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T21:41:45Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a car drifting sim, a simplistic one at that", "repo": "https://github.com/AhmedThe13thUser/Drift-King", "demo": "https://ahmedthe13thuser.github.io/Drift-King/"}]...
|
[{"post_id": 65461, "ts": "202 [{"post_id": 65461, "ts": "2026-09-10T16:32:06Z", "hours": 4.4192, "text": "Finally finished it it took a lot of formulas and a lot of wiki pages but its finally done, next step: Tire physics and/or clutch slipping and manual gearbox clutch control, so u can dump it or whatever"}]...
|
Title: Drift King by @ahmad_abdalbaset | Stardance Title: Drift King by @ahmad_abdalbaset | Stardance
Devlogs:
Finally finished it it took a lot of formulas and a lot of wiki pages but its finally done, next step: Tire physics and/or clutch slipping and manual gearbox clutch control, so u can dump it or whatever
Ships:
I made a car drifting sim, a simplistic one at that...
|
1793411458.495729
|
1793497858.495729
|
|
60684
|
Stardex by @Mistix | Stardance
|
Mistix
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 65462, "ts": "202 [{"post_id": 65462, "ts": "2026-09-10T16:34:24Z", "hours": 1.0028, "text": "DEVLOG-1 building my Alarm clocks pcb, wiring is the worst part :("}]...
|
Title: Stardex by @Mistix | Stardance
Devlogs:
DE Title: Stardex by @Mistix | Stardance
Devlogs:
DEVLOG-1 building my Alarm clocks pcb, wiring is the worst part :(...
|
1793036952.431673
|
1793900952.431673
|
|
58930
|
Particle Life by @Chromo | Stardance
|
Chromo
|
0
|
9.01
|
0
|
[]
|
[{"post_id": 65464, "ts": "202 [{"post_id": 65464, "ts": "2026-09-10T16:40:43Z", "hours": 0.78, "text": "Dev log 4 - Tried figuring out the cause of flickering The conclusion was that I was swapping the buffers, and the fragment shader was drawing from the swapped SSBO, and maybe the compute shader might not be working as intended and not updating the values"}, {"post_id": 64688, "ts": "2026-09-09T08:55:20Z", "hours": 2.0758, "text": "Dev log - 3 I fiddled around with the compute shader; I started where I left off earlier, I tried using 2 variables for the movement of the particles, using the 1st position as the current position and updating the values in the 2nd and then swapping them for the next iteration Cleaned the code as the codebase was growing"}, {"post_id": 63884, "ts": "2026-09-07T21:51:39Z", "hours": 1.5797, "text": "Dev log 2 - Today i didn’t worked on anything visual but i tried to integrate compute shader in my project, It’s a mess right now as i’m still learning about compute shaders as i build this project, as my exams are going on i couldn’t spend much time implimenting the shader, I’ll try to update my project, the progress will be slow, but surely (image used from my previous post)"}, {"post_id": 62836, "ts": "2026-09-06T11:22:29Z", "hours": 4.5706, "text": "I’m currently working on particle life simulation. I’ve finalised my setup; it’ll be OpenGL + raylib. The whole project is coded in C++ Particle life is a simulation that presents emergent behaviour from simple forces interacting with each other. Unlike a gravity simulation, the particles can repel, attract and be neutral to each other."}]...
|
Title: Particle Life by @Chromo | Stardance
Devlo Title: Particle Life by @Chromo | Stardance
Devlogs:
I’m currently working on particle life simulation. I’ve finalised my setup; it’ll be OpenGL + raylib. The whole project is coded in C++ Particle life is a simulation that presents emergent behaviour from simple forces interacting with each other. Unlike a gravity simulation, the particles can repel, attract and be neutral to each other.
Dev log 2 - Today i didn’t worked on anything visual but i tried to integrate compute shader in my project, It’s a mess right now as i’m still learning about compute shaders as i build this project, as my exams are going on i couldn’t spend much time implimenting the shader, I’ll try to update my project, the progress will be slow, but surely (image used from my previous post)
Dev log - 3 I fiddled around with the compute shader; I started where I left off earlier, I tried using 2 variables for the movement of the particles, using the 1st position as the current position and updating the values in the 2nd and then swapping them for the next iteration Cleaned the code as the codebase was growing
Dev log 4 - Tried figuring out the cause of flickering The conclusion was that I was swapping the buffers, and the fragment shader was drawing from the swapped SSBO, and maybe the compute shader might not be working as intended and not updating the values...
|
1792774353.4566083
|
1793638353.4566083
|
|
57462
|
Image to ASCII by @reaue | Stardance
|
reaue
|
3
|
26.0
|
376
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:02:20Z", "hours": 11.0, "multiplier": 18.12, "payout": 205, "blessing": "neutral", "text": "What did you make? I finalized my website which convert image and now text and video into ASCII art. For this ship, I added the video (including GIF) and text convertor. I also added new way to export your art such as in PNG, JPG, MP4 and GIF. I also try to design the website to be more undestandable (for example you don’t have acces to the download button when nothing it’s ready to be download). What was challenging? There were the challenging part. First find the good API for the text to ASCII convertor. I easily tested 5 different APIs for this features. The second challenge was to find a way to convert GIF to MP4 and the opposite. I first tried with a librairie, it didn’t work I had an error messag. So, I switched to FFmpeg and it was very complicated to find a workable way to do the conversion. What are you proud of? I’m proud of presenting you a finished Website where you can created easily ASCII art. With the implementation of features requested by raters. What should people know so they can test your project? The project is available at this url : https://reaue.github.io/ImgToASCII/ . So come test it and send your best ASCII art to your friends.", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}, {"ship_num": 2, "ts": "2026-09-08T17:30:09Z", "hours": 5.0, "multiplier": 16.78, "payout": 80, "blessing": "neutral", "text": "What did you make? ImgToASCII is a web-based tool which converts image to ASCII art. This is the V.2 of this website. I mostly added features requested by raters such as a drag and drop zone, an invert button, optimization on the algorithm and progress notification when your computer calculate the render. I fanilly made the pyhton proof of concept more user-friendly. What was challenging? The most challenging part was the algorithm optimization. It took me time and reflection and I have a good and a bad news, the first one is that for the black and white version there is almost no waiting time no matter the size. But for the color version it was harder. I succeed on reducing the time but no like for the the no color version. What are you proud of? I’m proud of how much time I earn between before and now for the calculation time. I thought it was impossible to optimize it but after some reflection time I found solution. I’m also proud of succeed all features that people want to get. What should people know so they can test your project? The project is available online here : https://reaue.github.io/ImgToASCII/ .", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}, {"ship_num": 3, "ts": "2026-09-03T18:41:21Z", "hours": 10.0, "multiplier": 9.07, "payout": 91, "blessing": "neutral", "text": "What did you make? I created a web-based tool that converts images into ASCII art directly in your browser. I started with a proof of concept in python because it’s the programming langage I know best. You can find it on GitHub (poc/main.py). What was challenging? I had never built a website apart from a local one with Flask in python. I had never work with HTML, CSS or even JS before. Fortunately, JS looks quite similar to C, so it was not the most challenging to learn. HTML is quite simple and CSS was an nightmare, and the most difficult part for me. What are you proud of? I’m proud if the design, the website follows a paper style and for the dark mod a terminal-inspired style. I’m also happy with the final result and all I learned. What should people know so they can test your project? The website can be very funny, you can convert memes or other images to ASCII art and then share it as text or as a png.", "repo": "https://github.com/reaue/ImgToASCII", "demo": "https://reaue.github.io/ImgToASCII/"}]...
|
[{"post_id": 65467, "ts": "202 [{"post_id": 65467, "ts": "2026-09-10T16:44:47Z", "hours": 1.9567, "text": "The last devlog (10) - I think I finally have finished this webiste. I added more way to export your ASCII art such as PNG, JPG, GIF and MP4. I also tried to optimize the design to be more user-friendly. Now I think I have finished this site (maybe if someone propose me a big feature I will come back to my decision). Time to ship the final version. Thanks for all your feedback it was very useful."}, {"post_id": 65274, "ts": "2026-09-10T08:46:02Z", "hours": 1.975, "text": "Devlog 9 - Adding Gif to the video format. I thought it would be easier but I spent 2 hours of finding a good way to convert Gif to video format (such as MP4). I started with a librarie but I had an error, so I switched for FFmpeg and this has led to a lot of bugs. I coorected them and added a better preview of what your video would like. Now everything works well so try it by converting your best meme."}, {"post_id": 65003, "ts": "2026-09-09T19:43:07Z", "hours": 3.8242, "text": "Devlog 8 - Finally the video option ! After hours of development I added the video to ASCII convertor. If you tested it you will see a notification informing you about estimated pourcentage and it can take time so don’t try big video (a big video it’s already a 30 secondes one) or decrease other options. How it’s work. Basically, it cut video into frame, uses the image to ASCII converter and then recreates a video."}, {"post_id": 64766, "ts": "2026-09-09T12:45:42Z", "hours": 3.5339, "text": "Devlog 7 - Adding a text to ASCII converter ! It was such a really challenging idea to implement. My first idea was to call a google API, make the search and take the first image proposed by google. But the API I was looking for was disable for new people. So I try an API with AI generation but it wasn’t free. After that I looked for the reserp API a google scraper. But I needed to stock a private API key on a server and after one hour of trying, testing and fixing bugs. I said to myself that the best way was maybe the wikimedia API, it’s maybe less accurate than other API but at least it was free and no API_KEY needed. So I started devloped this idea and now it’s online. Don’t hesitate to test it and give me feedback or other features you want to see."}, {"post_id": 64334, "ts": "2026-09-08T17:10:51Z", "hours": 1.2358, "text": "Devlog 6 - Updating the README and make main.py user-friendly. I updated the README.md to list new features for the upcoming ship, I also made the proof of concept in python more user-friendly with commands in the terminal."}, {"post_id": 64271, "ts": "2026-09-08T15:27:01Z", "hours": 2.7508, "text": "Devlog 5 - I had added all requested features ! Firstly, I added the invert button and the drag and drop zone, it was quite simple. After that, I added the progress notification and tried to optimize the algorithm. It was not simple, I changed it to read only one time the image and not read for brightness and then another time for the drawing… I, also for the black and white version, drew not each character one by one but only after a line. It speed up the calculation time a lot."}, {"post_id": 64163, "ts": "2026-09-08T11:43:02Z", "hours": 0.7614, "text": "Devlog 4 - Think about raters ideas. I add a section in the README with every features request. I think the first two are excelent ideas, for the third one I have no idea how to make it and then the last one can be a good feature. If you have any ideas I’m taker and if you know how to optimize the algorithm let me know."}, {"post_id": 61007, "ts": "2026-09-03T18:21:33Z", "hours": 1.7447, "text": "Devlog 3 - the final one ! I added a switch between a light and a dark mod, the design of the dark one is inspire by a terminal/ the movie Matrix. I also fix some small positioning bugs. And that’s all. I wil ship it now."}, {"post_id": 60905, "ts": "2026-09-03T15:40:34Z", "hours": 6.7278, "text": "Devlog 2 - the website is online ! Come test it, it’s a web-based tool that converts images into ASCII art directly in your browser. You can convert memes, family photos and even more. I’m very happy with the design, because I learned HTML, JS and CSS for this project (CSS is the worst and least fun) and I like the result. I would be very grateful if you report any bugs, because I test it only in Firefox and Microsoft Edge. The next step is to add a dark mode."}, {"post_id": 60423, "ts": "2026-09-02T18:45:57Z", "hours": 1.5622, "text": "Devlog 1 - New project ! I started a new project, the main goal is to build a website that lets you choose an image or a video and transform it into ASCII art. I quickly built a proof of concept in Python. But the problem is that I have literally no knowledge of web programming. So, I’m going to spend next hours learning JavaScrypt and try to implement all my ideas."}]...
|
Title: Image to ASCII by @reaue | Stardance
Devlo Title: Image to ASCII by @reaue | Stardance
Devlogs:
Devlog 1 - New project ! I started a new project, the main goal is to build a website that lets you choose an image or a video and transform it into ASCII art. I quickly built a proof of concept in Python. But the problem is that I have literally no knowledge of web programming. So, I’m going to spend next hours learning JavaScrypt and try to implement all my ideas.
Devlog 2 - the website is online ! Come test it, it’s a web-based tool that converts images into ASCII art directly in your browser. You can convert memes, family photos and even more. I’m very happy with the design, because I learned HTML, JS and CSS for this project (CSS is the worst and least fun) and I like the result. I would be very grateful if you report any bugs, because I test it only in Firefox and Microsoft Edge. The next step is to add a dark mode.
Devlog 3 - the final one ! I added a switch between a light and a dark mod, the design of the dark one is inspire by a terminal/ the movie Matrix. I also fix some small positioning bugs. And that’s all. I wil ship it now.
Devlog 4 - Think about raters ideas. I add a section in the README with every features request. I think the first two are excelent ideas, for the third one I have no idea how to make it and then the last one can be a good feature. If you have any ideas I’m taker and if you know how to optimize the algorithm let me know.
Devlog 5 - I had added all requested features ! Firstly, I added the invert button and the drag and drop zone, it was quite simple. After that, I added the progress notification and tried to optimize the algorithm. It was not simple, I changed it to read only one time the image and not read for brightness and then another time for the drawing… I, also for the black and white version, drew not each character one by one but only after a line. It speed up the calculation time a lot.
Devlog 6 - Updating the README and make main.py user-friendly. I updated the README.md to list new features for the upcoming ship, I also made the proof of concept in python more user-friendly with commands in the terminal.
Devlog 7 - Adding a text to ASCII converter ! It was such a really challenging idea to implement. My first idea was to call a google API, make the search and take the first image proposed by google. But the API I was looking for was disable for new people. So I try an API with AI generation but it wasn’t free. After that I looked for the reserp API a google scraper. But I needed to stock a private API key on a server and after one hour of trying, testing and fixing bugs. I said to myself that the best way was maybe the wikimedia API, it’s maybe less accurate than other API but at least it was free and no API_KEY needed. So I started devloped this idea and now it’s online. Don’t hesitate to test it and give me feedback or other features you want to see.
Devlog 8 - Finally the video option ! After hours of development I added the video to ASCII convertor. If you tested it you will see a notification informing you about estimated pourcentage and it can take time so don’t try big video (a big video it’s already a 30 secondes one) or decrease other options. How it’s work. Basically, it cut video into frame, uses the image to ASCII converter and then recreates a video.
Devlog 9 - Adding Gif to the video format. I thought it would be easier but I spent 2 hours of finding a good way to convert Gif to video format (such as MP4). I started with a librarie but I had an error, so I switched for FFmpeg and this has led to a lot of bugs. I coorected them and added a better preview of what your video would like. Now everything works well so try it by converting your best meme.
The last devlog (10) - I think I finally have finished this webiste. I added more way to export your ASCII art such as PNG, JPG, GIF and MP4. I also tried to optimize the design to be more user-friendly. Now I think I have finished this site (maybe if someone propose me a big feature I will come back to my decision). Time to ship the final version. Thanks for all your feedback it was very useful.
Ships:
What did you make? I created a web-based tool that converts images into ASCII art directly in your browser. I started with a proof of concept in python because it’s the programming langage I know best. You can find it on GitHub (poc/main.py). What was challenging? I had never built a website apart from a local one with Flask in python. I had never work with HTML, CSS or even JS before. Fortunately, JS looks quite similar to C, so it was not the most challenging to learn. HTML is quite simple and CSS was an nightmare, and the most difficult part for me. What are you proud of? I’m proud if the design, the website follows a paper style and for the dark mod a terminal-inspired style. I’m also happy with the final result and all I learned. What should people know so they can test your project? The website can be very funny, you can convert memes or other images to ASCII art and then share it as text or as a png.
What did you make? ImgToASCII is a web-based tool which converts image to ASCII art. This is the V.2 of this website. I mostly added features requested by raters such as a drag and drop zone, an invert button, optimization on the algorithm and progress notification when your computer calculate the render. I fanilly made the pyhton proof of concept more user-friendly. What was challenging? The most challenging part was the algorithm optimization. It took me time and reflection and I have a good and a bad news, the first one is that for the black and white version there is almost no waiting time no matter the size. But for the color version it was harder. I succeed on reducing the time but no like for the the no color version. What are you proud of? I’m proud of how much time I earn between before and now for the calculation time. I thought it was impossible to optimize it but after some reflection time I found solution. I’m also proud of succeed all features that people want to get. What should people know so they can test your project? The project is available online here : https://reaue.github.io/ImgToASCII/ .
What did you make? I finalized my website which convert image and now text and video into ASCII art. For this ship, I added the video (including GIF) and text convertor. I also added new way to export your art such as in PNG, JPG, MP4 and GIF. I also try to design the website to be more undestandable (for example you don’t have acces to the download button when nothing it’s ready to be download). What was challenging? There were the challenging part. First find the good API for the text to ASCII convertor. I easily tested 5 different APIs for this features. The second challenge was to find a way to convert GIF to MP4 and the opposite. I first tried with a librairie, it didn’t work I had an error messag. So, I switched to FFmpeg and it was very complicated to find a workable way to do the conversion. What are you proud of? I’m proud of presenting you a finished Website where you can created easily ASCII art. With the implementation of features requested by raters. What should people know so they can test your project? The project is available at this url : https://reaue.github.io/ImgToASCII/ . So come test it and send your best ASCII art to your friends....
|
1793505522.161579
|
1793591922.161579
|
|
59289
|
Disease identification site using datasets by @rea Disease identification site using datasets by @realguyxgammer | Stardance...
|
realguyxgammer
|
1
|
1.88
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T13:43:18Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this project actually identities diseases which i trained it from kaggle i took around 132 main diseases like the life threatning ones and around 900-1000 normal diseases so it basically can detect quite the amount", "repo": "https://github.com/realguy-beep/Disease-identification-site-using-datasets", "demo": "https://disease.realguyxgammer.hackclub.app"}]...
|
[{"post_id": 65471, "ts": "202 [{"post_id": 65471, "ts": "2026-09-10T17:02:56Z", "hours": 0.8786, "text": "optimized the code abit and made the interference look much more better i am ready to ship it now"}, {"post_id": 64796, "ts": "2026-09-09T13:40:13Z", "hours": 0.9319, "text": "deployed the project to ship it and also for you all to check lol go as wild as u all can to this website cause i have trained it with some crazy datasets"}, {"post_id": 63419, "ts": "2026-09-07T07:53:11Z", "hours": 0.4631, "text": "just made it safe to publish it to github lol would take suggestions and improve more"}]...
|
Title: Disease identification site using datasets Title: Disease identification site using datasets by @realguyxgammer | Stardance
Devlogs:
just made it safe to publish it to github lol would take suggestions and improve more
deployed the project to ship it and also for you all to check lol go as wild as u all can to this website cause i have trained it with some crazy datasets
optimized the code abit and made the interference look much more better i am ready to ship it now
Ships:
this project actually identities diseases which i trained it from kaggle i took around 132 main diseases like the life threatning ones and around 900-1000 normal diseases so it basically can detect quite the amount...
|
1792878617.4721243
|
1793742617.4721243
|
|
60687
|
SpikeyDodge by @Sameer23 | Stardance
|
Sameer23
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:04:18Z", "hours": 1.0, "multiplier": 1.53, "payout": 2, "blessing": "neutral", "text": "I made a meteor dodging game where we can use the A and D key in keyboard to move our triangle and survive.", "repo": "https://github.com/imskyyyy5/SpikeyDodge", "demo": "https://silly-crisp-053d76.netlify.app/"}]...
|
[{"post_id": 65472, "ts": "202 [{"post_id": 65472, "ts": "2026-09-10T17:03:19Z", "hours": 0.3908, "text": "DevLog:3–> The game is completed"}, {"post_id": 65433, "ts": "2026-09-10T15:53:14Z", "hours": 0.3831, "text": "DEVLOG:2–>It looks like this and the triangle started moving."}, {"post_id": 65420, "ts": "2026-09-10T15:27:19Z", "hours": 0.2567, "text": "A HTML CSS JS game SpikeyDodge under progress where you have the control of the triangle and you have to dodge the balls falling."}]...
|
Title: SpikeyDodge by @Sameer23 | Stardance
Devlo Title: SpikeyDodge by @Sameer23 | Stardance
Devlogs:
A HTML CSS JS game SpikeyDodge under progress where you have the control of the triangle and you have to dodge the balls falling.
DEVLOG:2–>It looks like this and the triangle started moving.
DevLog:3–> The game is completed
Ships:
I made a meteor dodging game where we can use the A and D key in keyboard to move our triangle and survive....
|
1793411724.4892428
|
1793498124.4892428
|
|
44555
|
Torrent managing app by @clumsy261 | Stardance
|
clumsy261
|
0
|
21.68
|
0
|
[]
|
[{"post_id": 65480, "ts": "202 [{"post_id": 65480, "ts": "2026-09-10T17:18:03Z", "hours": 11.1681, "text": "Most of this ship has been messy ai debugging. So far I’ve gotten to reimplementing some bug fixes (like announceless torrent files) and I’m now working on implementing dht…. AGAIN Also, now the cli has a couple more user inputs, like TORENTINO_TRACKERS and TORENTINO_DHT"}, {"post_id": 63093, "ts": "2026-09-06T18:10:16Z", "hours": 1.2406, "text": "I’m banging my head on the screen. I’ve just switched my laptop from windows to linux, and wiped my ssd. I thought I had everything backed up, but when I checked again now, I forgot to push all the progress I made with the dht discovery and magnet link managing. I have to redo all that…"}, {"post_id": 59230, "ts": "2026-08-31T22:02:47Z", "hours": 3.3972, "text": "Ok even bigger news!! Dht discovery was an important step, but this is what is has been building up to: Using BEP9/10, now the program can get the torrent files and download their specific content with only a magnet link!!! Firstly, the app begins a huge dht query to look for peers (if possible even thousands) Afterwards it requests the metadata (parsed torrent file) from each of them until it gets a response (most seeders only send content, not the metadata and I don’t yet know a way to filter them out) After it recieves the metadata, the download proceeds normally In another course of events, the free nim api key I was using drew it’s last breath repairing this. (I’ve been staring at it for one hour not knowing that the 5th bit in the torrent dict- BEP 9 specific was wrong). Anywhom the key still works theoretically but my cli - opencode failed ( asks for money I don’t have) and I can’t keep my eyes open to fix it, maybe tomorrow."}, {"post_id": 58845, "ts": "2026-08-31T12:59:17Z", "hours": 0.6925, "text": "This was a big one. I’ve now implemented dht discovery!! (after fixing some bugs), the rust program can now install announceless torrents! (this example here used no dht since my default added trackers had the torrent indexed, but it works :D)"}, {"post_id": 57920, "ts": "2026-08-30T08:00:20Z", "hours": 1.3342, "text": "Alrighty, now I have cleared some bugs, made the tool more efficient AAAND came up with my (kinda) first original idea. What if I just took the trackers given in the torrent file, and added some on top of that -Now the program defaults to adding two large public trackers – (going from one official seeder to three) There is a fallback option, setting an env variable can override all trackers, even the ones from the torrent file (if any)"}, {"post_id": 57606, "ts": "2026-08-29T20:14:09Z", "hours": 2.5556, "text": "After one hour (and some more) - the torentino-pure (pure rust no cli) HAS A WORKING DEMO. I will now get to understanding the actual code, and then optimise it to use dht protocols for torrents."}, {"post_id": 45052, "ts": "2026-08-11T09:32:32Z", "hours": 1.2967, "text": "Finally chose a coding environment. I’m going to use tauri, combining a rust-backend with js-frontend. I already knew some rust so it shouldn’t be a problem."}]...
|
Title: Torrent managing app by @clumsy261 | Starda Title: Torrent managing app by @clumsy261 | Stardance
Devlogs:
Finally chose a coding environment. I’m going to use tauri, combining a rust-backend with js-frontend. I already knew some rust so it shouldn’t be a problem.
After one hour (and some more) - the torentino-pure (pure rust no cli) HAS A WORKING DEMO. I will now get to understanding the actual code, and then optimise it to use dht protocols for torrents.
Alrighty, now I have cleared some bugs, made the tool more efficient AAAND came up with my (kinda) first original idea. What if I just took the trackers given in the torrent file, and added some on top of that -Now the program defaults to adding two large public trackers – (going from one official seeder to three) There is a fallback option, setting an env variable can override all trackers, even the ones from the torrent file (if any)
This was a big one. I’ve now implemented dht discovery!! (after fixing some bugs), the rust program can now install announceless torrents! (this example here used no dht since my default added trackers had the torrent indexed, but it works :D)
Ok even bigger news!! Dht discovery was an important step, but this is what is has been building up to: Using BEP9/10, now the program can get the torrent files and download their specific content with only a magnet link!!! Firstly, the app begins a huge dht query to look for peers (if possible even thousands) Afterwards it requests the metadata (parsed torrent file) from each of them until it gets a response (most seeders only send content, not the metadata and I don’t yet know a way to filter them out) After it recieves the metadata, the download proceeds normally In another course of events, the free nim api key I was using drew it’s last breath repairing this. (I’ve been staring at it for one hour not knowing that the 5th bit in the torrent dict- BEP 9 specific was wrong). Anywhom the key still works theoretically but my cli - opencode failed ( asks for money I don’t have) and I can’t keep my eyes open to fix it, maybe tomorrow.
I’m banging my head on the screen. I’ve just switched my laptop from windows to linux, and wiped my ssd. I thought I had everything backed up, but when I checked again now, I forgot to push all the progress I made with the dht discovery and magnet link managing. I have to redo all that…
Most of this ship has been messy ai debugging. So far I’ve gotten to reimplementing some bug fixes (like announceless torrent files) and I’m now working on implementing dht…. AGAIN Also, now the cli has a couple more user inputs, like TORENTINO_TRACKERS and TORENTINO_DHT...
|
1793282027.5973155
|
1793886827.5973155
|
|
57140
|
Visora by @Amadev | Stardance
|
Amadev
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:29:23Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built Visora, an MCP server that gives AI agents reliable high-level control over the Unity Editor. The hardest part was making animation and editor workflows safe and predictable: IK, gaze, retargeting, animation QA, bridge reload recovery, prefab inspection, rollback, and reproducible preview artifacts. I’m most proud of how much of the Unity-side behavior is covered by real EditMode/integration tests instead of only mocked Python tests. To test it, use the GitHub release/source, follow the setup guide, connect Visora to a Unity project, and try the MCP tools for animation, scene inspection, previews, or prefab inspection.", "repo": "https://github.com/AmaLS367/Visora", "demo": "https://github.com/AmaLS367/Visora/releases/tag/v0.1.3"}]...
|
[{"post_id": 65482, "ts": "202 [{"post_id": 65482, "ts": "2026-09-10T17:21:38Z", "hours": 5.3419, "text": "Preview Artifacts, Bridge Recovery & Prefab Workflows Added reproducible animation preview artifacts with stored records and comparison tools for repeatable QA.Improved Unity bridge recovery during reloads/recompiles, added retry hints and safer timeout handling. Added real Unity E2E animation fixtures and reorganized the test suite.Finished the v0.1.3 release, refreshed the README/docs, and started v0.1.4 prefab workflows. Added inspect_prefab_asset and inspect_prefab_overrides with native Unity services, support for nested/variant/model prefabs, structured override inspection, stable IDs, and Python/integration/EditMode test coverage."}, {"post_id": 64760, "ts": "2026-09-09T12:27:18Z", "hours": 8.7661, "text": "Worked on a large animation/character workflow update for Visora. Added dedicated agent workflows for animation authoring, camera/action sequences, rig retargeting, IK, gaze, motion polishing, contact handling and animation QA. Updated the MCP instructions and project docs so agents have a clear workflow for checking rigs, previewing animation, validating motion and handling Humanoid/Generic fallback cases. Implemented new animation tooling around Two-Bone IK, viewport-based effector placement and character gaze. Added support for solving and baking IK/gaze into animation clips, including parameter validation and Unity capability checks.Added a bigger QA layer for animation. This includes temporal motion analysis, curve discontinuity diagnostics, self-intersection checks and comparison of animation previews. Also added contact baking for things like planted feet/hands and camera-subject action tooling for synchronizing character motion with camera impacts. Added atomic animation transactions and improved rollback/backup handling so multiple animation edits can be applied together and reverted safely when something fails. Refactored the Unity-side animation services around shared sampling, curve writing and rollback helpers. Spent a good amount of time hardening all of this against actual Unity edge cases: Edit Mode requirements, unsupported bridge capabilities, invalid parameters, unknown diagnostic values, quaternion discontinuities, tangent preservation and proper exception handling. Added a Unity EditMode integration test suite covering IK, gaze, contact baking and atomic animation transactions, together with a runner script. Expanded the Python unit tests for the new animation tools and failure cases as well.Also reworked Visora’s visual output. Screenshots, animation previews and video frames now use multimodal MCP image blocks and file artifacts instead of dumping Base64 data into the response. Multi-frame previews can generate contact sheets, and full-resolution artifacts stay on disk. After that I focused heavily on MCP context usage. Compact tool definitions reduced the tool catalog payload significantly, diagnostic tools now have limits/filtering for large skeletons and clips, tool results are compacted, duplicate structured output is removed, and several redundant tools/wrappers were merged or deleted. The tool catalog went from 55 tools down to 44. Merged the two separate video capture tools into a single capture_video workflow and reduced the default screenshot resolution to 720p. Inline images are now automatically downscaled while keeping the full-resolution artifact available separately. Finally tuned the default diagnostic dump sizes further so normal tool calls consume much less agent context and larger detailed dumps are requested only when they are actually needed."}, {"post_id": 62172, "ts": "2026-09-05T13:09:04Z", "hours": 2.9436, "text": "Editing Animation Clips & Events Hey everyone, continue working on it. Up until now, the agent could only really watch animations—taking previews and checking poses. If a keyframe was off or a transition looked janky, you still had to go into Unity and fix it by hand. Now, the agent can actually edit AnimationClip assets directly. It can add, move, or delete keyframes, tweak curves, and set tangent modes like smooth, linear, or step holds. Giving an AI write access to your animation files is honestly a bit scary—one bad curve and your character turns into a noodle. To keep things safe, Visora now takes an automatic backup of the clip before touching it, and hooks every edit into Unity’s native Undo system. If the agent makes a mess, you can roll it back with a tool call or just hit Ctrl + Z right in the editor. We also added tools to create and remove animation events. This makes it way easier to sync things like hit-stops, camera shake, or footstep sounds to exact frames on the timeline instead of guessing with timers."}, {"post_id": 61583, "ts": "2026-09-04T15:45:13Z", "hours": 5.5072, "text": "Visora v0.1.3 — Giving Agents Eyes on Unity Animations So, we just fixed a massive problem. Once I hit merge, a huge weight lifted off my shoulders. It feels like the raw volume of code I write is getting smaller each time, but what actually lands has a massive, cascading impact on the entire system.Until now, whenever an AI agent needed to inspect an animation in Unity, it was basically flying blind. The old approach was either pulling raw curve data (which tells an agent nothing about clipping, silhouette, or visual feel) or recording full video dumps over the HTTP bridge. Video was heavy, expensive on tokens, slow to transfer, and worse: if the camera wasn’t manually lined up in the scene, the character would just walk right out of frame or get clipped halfway through. With Visora v0.1.3, we tackled this head-on by building preview_animation. It’s not just a snapshot tool — it’s a complete visual pipeline designed specifically for agent context budgets. What Actually Changed Under the Hood Trajectory-Aware Auto-Framing (C# Engine Side) Instead of relying on whatever camera happens to be in the scene, Visora now spins up a transient preview camera. Before snapping a single frame, it samples the clip across its timeline, collects every active skinned and mesh renderer, and computes a union bounding sphere for the entire motion trajectory. It places the camera at an ideal 45° vantage point, automatically calculates the optimal distance based on camera FOV, and dynamically compensates for vertical vs. horizontal aspect ratios so tall or wide aspect ratios don’t clip the character’s head or limbs. Smart Keyframe Selection (Python Side) Agents can’t look at 120 raw frames — that would incinerate context windows and latency. We built an intelligent keyframe extractor (preview_keyframes.py) that analyzes the clip curves to find where actual motion happens: curve extrema, zero-crossings, sudden velocity changes, and animation event timestamps. It pins the start and end poses, then fits the most informative frames within a strict frame budget (e.g. 4 to 8 images). Zero-Side-Effect Scene Safety One of the hardest parts of building agent tooling for Unity is engine hygiene. The preview system samples the animation, renders offscreen to a custom RenderTexture, encodes directly to PNG byte buffers, and cleans up after itself. No dummy cameras left in the hierarchy, no dirty scene flags, and character poses are strictly restored to their pre-sampling state. Hardened CI & The Unity Package Gate We also tightened our pre-commit and CI gates. We introduced scripts/check_unity_package.py, compiling the C# package directly against real Unity assemblies with Microsoft.Unity.Analyzers in headless Linux containers. If there’s an obsolete API, a loose memory allocation, or a CA analyzer warning, the build fails before it ever touches a project. It feels great to have this merged and rock-solid. With animation visual inspection out of the way, I’m heading straight to the next item on the Roadmap: Typed Clip, Event, and Camera Authoring!"}, {"post_id": 60781, "ts": "2026-09-03T11:33:29Z", "hours": 2.2286, "text": "Visora devlog — v0.1.1 & v0.1.2 Shipped two releases back to back. Visora now has a proper open-source foundation: an Apache-2.0 license, full contributor and security docs, a hardened Docker image, and a complete CI pipeline that tests every change and publishes releases automatically. v0.1.1 was about infrastructure — agents can now search the web for 3D models, environments and rigs and import them straight into a live Unity project, plus all the CI/CD and Docker groundwork. v0.1.2 was about packaging and community — licensing, PyPI metadata, issue templates, contributor guides, and release integrity checks. You can now just pip install visora. And here’s the first real demo. A 2-second shot: a Rover-style character from Wuthering Waves throws a flying kick straight into the camera in a desert wasteland. The environment, the rig, the animation and the capture were all built by an AI agent driving a live Unity Editor through Visora — nothing hand-placed. The whole thing was made by Claude Sonnet 5, using about 20% of the 5-hour limit on the $20 plan. So a mid-tier model, for a fraction of a cheap subscription, can already take a scene from empty to finished shot on its own. Right now it’s 2 seconds — deliberately small, to set the floor. The goal is for Visora to grow into something where AI can build full, directed animation sequences: minute-long shots, multiple characters, real rigging, proper timelines. “Make me a cutscene” turning into an actual cutscene. This dropkick is just the starting line."}, {"post_id": 60717, "ts": "2026-09-03T08:42:43Z", "hours": 0.915, "text": "Production CI/CD and MCP 2.0 are now complete for Visora. The project now has a parallel GitHub Actions pipeline covering formatting, Ruff linting, strict mypy checks, unit and integration tests, lockfile validation, Unity package validation, distribution builds, and an enforced 80% coverage threshold. The workflows use uv caching, cancel outdated runs automatically, and skip runs for documentation-only changes. All GitHub Actions are pinned by commit SHA. A release pipeline now validates version tags, runs the full verification suite, builds the package, publishes it to PyPI, and creates a GitHub Release. Dependabot was added to update GitHub Actions and Python dependencies weekly. Funding configuration was added as well. Visora was migrated from MCP 1.x to MCP 2.1.1, replacing FastMCP with MCPServer and updating the related tests and documentation. The updated Dependabot pull request passed every CI check and was merged. The Production CI/CD roadmap item is now marked as completed."}, {"post_id": 60695, "ts": "2026-09-03T07:39:13Z", "hours": 3.4883, "text": "Visora devlog — asset pipeline & Unity native bridge (18 commits) Asset pipeline: from broken to trustworthy Built out the 3D-asset workflow (search → download → import → verify) and then spent most of the effort hardening it against silent failures: Added asset search/download/Unity-import tools (1a0bcd3, bf6a7d9), then refactored out dead backward-compat aliases (dda6c17). Fixed real bugs found by actually running it: ambientCG downloads being wrongly rejected and Sketchfab results silently hidden (99d3f15), a wrong ambientCG download URL for 3D models (1d6e2ce), a crash on comma-separated port lists plus missing env-var docs (117e6e3), and .bin/.mtl companion files being incorrectly stripped out of glTF/OBJ archives (5cb1afa). Discovered Sketchfab’s own search API ignores the query text entirely (verified live) — added web_search_assets, a SearXNG-primary/DuckDuckGo-fallback real web search to find a specific named model and extract its Sketchfab UID (4489725). Biggest find: download_and_import_asset was reporting success=true even when Unity couldn’t actually parse the file (glTF with no importer installed → empty placeholder asset). Fixed to detect and reject that case explicitly instead of lying about success (8c4241b). Native Unity bridge: first real compile & runtime test com.visora.editor had apparently never been compiled in a real Unity Editor before. Opening it in Unity 6.6 surfaced a chain of genuine bugs, fixed one at a time: A broken float field that Unity’s JSON deserializer can’t handle, flattened to float on both C# and Python sides (08f502e, 4d05468). Unity 6.6 API removals: GetInstanceID() → GetEntityId() (c8c8905), then GetEntityId()’s own obsolete int-conversion operator → GetRawData() (027e39c). Two HTTP handlers (/api/editor/state, /api/visora/info) and a log-callback subscription were calling Unity APIs off the main thread, causing runtime errors — dispatched onto the main thread (d27e03f, 5e3069b). Dynamic C# snippet compilation was missing a reference to UnityEditor.CoreModule, breaking any snippet touching EditorApplication/EditorSceneManager (a8689a9). Agent guidance Shipped documentation aimed at other agents driving Visora, not just humans: an always-on MCP instructions block plus a copyable Claude Code skill (visora-asset-workflow) covering Sketchfab’s broken search, supported import formats, and how to actually verify an import worked (4e8cd5c). Housekeeping Committed the 29 .meta files Unity generated on first real import of the package — standard Unity convention, and further confirmation the package had never been opened in a real editor before this round of testing (b9e4f01). Net effect: the asset import pipeline no longer lies about success, Sketchfab search actually works for named models, and the native Unity bridge compiles and runs cleanly on Unity 6.6 — all verified end-to-end (ambientCG apple + a Sketchfab character model imported, inspected, and visually confirmed in-scene)."}, {"post_id": 60167, "ts": "2026-09-02T11:47:32Z", "hours": 1.5803, "text": "Building Visora: Teaching AI agents to actually see and fix Unity scenes (v0.1.0 update) Quick update on what I’ve been hacking on for Visora since adding the project banner. The problem I ran into: If you try to let an AI agent (like Claude or Cursor) work inside Unity, it’s usually a disaster. Current bridges just let the model run raw C# strings and read console logs.The agent is completely blind. It doesn’t know if a 3D character spawned behind the camera, if an animation is flying off into infinity, or if a model looks like a spiky mess because bone weights are broken. Even worse, agents love to edit things during Play Mode or hit save while Unity is recompiling, completely wrecking the scene files.I got tired of babysitting that, so I built Visora — a Python MCP server and a companion Unity package that gives agents actual eyes, rigging smarts, and guardrails so they don’t break your project. V0.1.0 — Here is what I’ve coded and got working over the last few days: Gave the agent actual vision. The agent can now render screenshots from any camera in the scene, check if a character is cut off by the screen edges or clipping planes (project_world_points and diagnose_camera_framing), compare before/after images, and even record short MP4/WebP video clips to inspect physics and animations over time. Made it understand rigs and animations. Instead of guessing why an animation looks wrong: It inspects AnimationClip curves directly and catches unwanted position or scale drift. It can sample any character’s pose at a specific second, inspect the transforms, and immediately restore the original pose so nothing stays messed up. Added a skeleton mapper with fuzzy bone search that understands both standard Humanoid rigs and messy Japanese MMD bone chains (like 全ての親, センター, 下半身, D-bones). Skinned mesh diagnostics Added tools to inspect SkinnedMeshRenderers. It detects inverted or zero-sized bounding boxes, missing root bones, and broken bone weights. It also tells you whether a glitch is just a missing material/texture or an actual broken mesh deformation. Made scene edits safe (undo & transaction rollback). Every script the agent runs now happens inside an isolated Undo group. If the C# code crashes or throws an exception, Visora automatically rolls back the entire scene to before the run. It also blocks saving during Play Mode so your scene never gets corrupted. Native Unity package + 24 typed tools Built a native Unity Editor package (com.visora.editor) using HttpListener hooked directly into Unity’s main editor update loop. On the Python side, I implemented 24 clean MCP tools with strict Pydantic schemas, auto-discovery for ports 8080-8085, and async queue polling for long tasks. Tagged and released v0.1.0 on GitHub with complete setup guides, agent recipes, and test coverage. What I’m building next for v0.1.1: Auto 3D model web search & download: I want the agent to search the web, find 3D models, textures, and environments, and download/import them directly into the Unity project so it can build and animate entire scenes on its own. Clean GitHub Actions CI/CD: Automatic linting, typing, and test runners on every commit. Docker support: A lightweight Dockerfile to easily run the MCP server anywhere in a headless container. You can check out the code and the v0.1.0 release here: https://github.com/AmaLS367/Visora"}]...
|
Title: Visora by @Amadev | Stardance
Devlogs:
Bui Title: Visora by @Amadev | Stardance
Devlogs:
Building Visora: Teaching AI agents to actually see and fix Unity scenes (v0.1.0 update) Quick update on what I’ve been hacking on for Visora since adding the project banner. The problem I ran into: If you try to let an AI agent (like Claude or Cursor) work inside Unity, it’s usually a disaster. Current bridges just let the model run raw C# strings and read console logs.The agent is completely blind. It doesn’t know if a 3D character spawned behind the camera, if an animation is flying off into infinity, or if a model looks like a spiky mess because bone weights are broken. Even worse, agents love to edit things during Play Mode or hit save while Unity is recompiling, completely wrecking the scene files.I got tired of babysitting that, so I built Visora — a Python MCP server and a companion Unity package that gives agents actual eyes, rigging smarts, and guardrails so they don’t break your project. V0.1.0 — Here is what I’ve coded and got working over the last few days: Gave the agent actual vision. The agent can now render screenshots from any camera in the scene, check if a character is cut off by the screen edges or clipping planes (project_world_points and diagnose_camera_framing), compare before/after images, and even record short MP4/WebP video clips to inspect physics and animations over time. Made it understand rigs and animations. Instead of guessing why an animation looks wrong: It inspects AnimationClip curves directly and catches unwanted position or scale drift. It can sample any character’s pose at a specific second, inspect the transforms, and immediately restore the original pose so nothing stays messed up. Added a skeleton mapper with fuzzy bone search that understands both standard Humanoid rigs and messy Japanese MMD bone chains (like 全ての親, センター, 下半身, D-bones). Skinned mesh diagnostics Added tools to inspect SkinnedMeshRenderers. It detects inverted or zero-sized bounding boxes, missing root bones, and broken bone weights. It also tells you whether a glitch is just a missing material/texture or an actual broken mesh deformation. Made scene edits safe (undo & transaction rollback). Every script the agent runs now happens inside an isolated Undo group. If the C# code crashes or throws an exception, Visora automatically rolls back the entire scene to before the run. It also blocks saving during Play Mode so your scene never gets corrupted. Native Unity package + 24 typed tools Built a native Unity Editor package (com.visora.editor) using HttpListener hooked directly into Unity’s main editor update loop. On the Python side, I implemented 24 clean MCP tools with strict Pydantic schemas, auto-discovery for ports 8080-8085, and async queue polling for long tasks. Tagged and released v0.1.0 on GitHub with complete setup guides, agent recipes, and test coverage. What I’m building next for v0.1.1: Auto 3D model web search & download: I want the agent to search the web, find 3D models, textures, and environments, and download/import them directly into the Unity project so it can build and animate entire scenes on its own. Clean GitHub Actions CI/CD: Automatic linting, typing, and test runners on every commit. Docker support: A lightweight Dockerfile to easily run the MCP server anywhere in a headless container. You can check out the code and the v0.1.0 release here: https://github.com/AmaLS367/Visora
Visora devlog — asset pipeline & Unity native bridge (18 commits) Asset pipeline: from broken to trustworthy Built out the 3D-asset workflow (search → download → import → verify) and then spent most of the effort hardening it against silent failures: Added asset search/download/Unity-import tools (1a0bcd3, bf6a7d9), then refactored out dead backward-compat aliases (dda6c17). Fixed real bugs found by actually running it: ambientCG downloads being wrongly rejected and Sketchfab results silently hidden (99d3f15), a wrong ambientCG download URL for 3D models (1d6e2ce), a crash on comma-separated port lists plus missing env-var docs (117e6e3), and .bin/.mtl companion files being incorrectly stripped out of glTF/OBJ archives (5cb1afa). Discovered Sketchfab’s own search API ignores the query text entirely (verified live) — added web_search_assets, a SearXNG-primary/DuckDuckGo-fallback real web search to find a specific named model and extract its Sketchfab UID (4489725). Biggest find: download_and_import_asset was reporting success=true even when Unity couldn’t actually parse the file (glTF with no importer installed → empty placeholder asset). Fixed to detect and reject that case explicitly instead of lying about success (8c4241b). Native Unity bridge: first real compile & runtime test com.visora.editor had apparently never been compiled in a real Unity Editor before. Opening it in Unity 6.6 surfaced a chain of genuine bugs, fixed one at a time: A broken float field that Unity’s JSON deserializer can’t handle, flattened to float on both C# and Python sides (08f502e, 4d05468). Unity 6.6 API removals: GetInstanceID() → GetEntityId() (c8c8905), then GetEntityId()’s own obsolete int-conversion operator → GetRawData() (027e39c). Two HTTP handlers (/api/editor/state, /api/visora/info) and a log-callback subscription were calling Unity APIs off the main thread, causing runtime errors — dispatched onto the main thread (d27e03f, 5e3069b). Dynamic C# snippet compilation was missing a reference to UnityEditor.CoreModule, breaking any snippet touching EditorApplication/EditorSceneManager (a8689a9). Agent guidance Shipped documentation aimed at other agents driving Visora, not just humans: an always-on MCP instructions block plus a copyable Claude Code skill (visora-asset-workflow) covering Sketchfab’s broken search, supported import formats, and how to actually verify an import worked (4e8cd5c). Housekeeping Committed the 29 .meta files Unity generated on first real import of the package — standard Unity convention, and further confirmation the package had never been opened in a real editor before this round of testing (b9e4f01). Net effect: the asset import pipeline no longer lies about success, Sketchfab search actually works for named models, and the native Unity bridge compiles and runs cleanly on Unity 6.6 — all verified end-to-end (ambientCG apple + a Sketchfab character model imported, inspected, and visually confirmed in-scene).
Production CI/CD and MCP 2.0 are now complete for Visora. The project now has a parallel GitHub Actions pipeline covering formatting, Ruff linting, strict mypy checks, unit and integration tests, lockfile validation, Unity package validation, distribution builds, and an enforced 80% coverage threshold. The workflows use uv caching, cancel outdated runs automatically, and skip runs for documentation-only changes. All GitHub Actions are pinned by commit SHA. A release pipeline now validates version tags, runs the full verification suite, builds the package, publishes it to PyPI, and creates a GitHub Release. Dependabot was added to update GitHub Actions and Python dependencies weekly. Funding configuration was added as well. Visora was migrated from MCP 1.x to MCP 2.1.1, replacing FastMCP with MCPServer and updating the related tests and documentation. The updated Dependabot pull request passed every CI check and was merged. The Production CI/CD roadmap item is now marked as completed.
Visora devlog — v0.1.1 & v0.1.2 Shipped two releases back to back. Visora now has a proper open-source foundation: an Apache-2.0 license, full contributor and security docs, a hardened Docker image, and a complete CI pipeline that tests every change and publishes releases automatically. v0.1.1 was about infrastructure — agents can now search the web for 3D models, environments and rigs and import them straight into a live Unity project, plus all the CI/CD and Docker groundwork. v0.1.2 was about packaging and community — licensing, PyPI metadata, issue templates, contributor guides, and release integrity checks. You can now just pip install visora. And here’s the first real demo. A 2-second shot: a Rover-style character from Wuthering Waves throws a flying kick straight into the camera in a desert wasteland. The environment, the rig, the animation and the capture were all built by an AI agent driving a live Unity Editor through Visora — nothing hand-placed. The whole thing was made by Claude Sonnet 5, using about 20% of the 5-hour limit on the $20 plan. So a mid-tier model, for a fraction of a cheap subscription, can already take a scene from empty to finished shot on its own. Right now it’s 2 seconds — deliberately small, to set the floor. The goal is for Visora to grow into something where AI can build full, directed animation sequences: minute-long shots, multiple characters, real rigging, proper timelines. “Make me a cutscene” turning into an actual cutscene. This dropkick is just the starting line.
Visora v0.1.3 — Giving Agents Eyes on Unity Animations So, we just fixed a massive problem. Once I hit merge, a huge weight lifted off my shoulders. It feels like the raw volume of code I write is getting smaller each time, but what actually lands has a massive, cascading impact on the entire system.Until now, whenever an AI agent needed to inspect an animation in Unity, it was basically flying blind. The old approach was either pulling raw curve data (which tells an agent nothing about clipping, silhouette, or visual feel) or recording full video dumps over the HTTP bridge. Video was heavy, expensive on tokens, slow to transfer, and worse: if the camera wasn’t manually lined up in the scene, the character would just walk right out of frame or get clipped halfway through. With Visora v0.1.3, we tackled this head-on by building preview_animation. It’s not just a snapshot tool — it’s a complete visual pipeline designed specifically for agent context budgets. What Actually Changed Under the Hood Trajectory-Aware Auto-Framing (C# Engine Side) Instead of relying on whatever camera happens to be in the scene, Visora now spins up a transient preview camera. Before snapping a single frame, it samples the clip across its timeline, collects every active skinned and mesh renderer, and computes a union bounding sphere for the entire motion trajectory. It places the camera at an ideal 45° vantage point, automatically calculates the optimal distance based on camera FOV, and dynamically compensates for vertical vs. horizontal aspect ratios so tall or wide aspect ratios don’t clip the character’s head or limbs. Smart Keyframe Selection (Python Side) Agents can’t look at 120 raw frames — that would incinerate context windows and latency. We built an intelligent keyframe extractor (preview_keyframes.py) that analyzes the clip curves to find where actual motion happens: curve extrema, zero-crossings, sudden velocity changes, and animation event timestamps. It pins the start and end poses, then fits the most informative frames within a strict frame budget (e.g. 4 to 8 images). Zero-Side-Effect Scene Safety One of the hardest parts of building agent tooling for Unity is engine hygiene. The preview system samples the animation, renders offscreen to a custom RenderTexture, encodes directly to PNG byte buffers, and cleans up after itself. No dummy cameras left in the hierarchy, no dirty scene flags, and character poses are strictly restored to their pre-sampling state. Hardened CI & The Unity Package Gate We also tightened our pre-commit and CI gates. We introduced scripts/check_unity_package.py, compiling the C# package directly against real Unity assemblies with Microsoft.Unity.Analyzers in headless Linux containers. If there’s an obsolete API, a loose memory allocation, or a CA analyzer warning, the build fails before it ever touches a project. It feels great to have this merged and rock-solid. With animation visual inspection out of the way, I’m heading straight to the next item on the Roadmap: Typed Clip, Event, and Camera Authoring!
Editing Animation Clips & Events Hey everyone, continue working on it. Up until now, the agent could only really watch animations—taking previews and checking poses. If a keyframe was off or a transition looked janky, you still had to go into Unity and fix it by hand. Now, the agent can actually edit AnimationClip assets directly. It can add, move, or delete keyframes, tweak curves, and set tangent modes like smooth, linear, or step holds. Giving an AI write access to your animation files is honestly a bit scary—one bad curve and your character turns into a noodle. To keep things safe, Visora now takes an automatic backup of the clip before touching it, and hooks every edit into Unity’s native Undo system. If the agent makes a mess, you can roll it back with a tool call or just hit Ctrl + Z right in the editor. We also added tools to create and remove animation events. This makes it way easier to sync things like hit-stops, camera shake, or footstep sounds to exact frames on the timeline instead of guessing with timers.
Worked on a large animation/character workflow update for Visora. Added dedicated agent workflows for animation authoring, camera/action sequences, rig retargeting, IK, gaze, motion polishing, contact handling and animation QA. Updated the MCP instructions and project docs so agents have a clear workflow for checking rigs, previewing animation, validating motion and handling Humanoid/Generic fallback cases. Implemented new animation tooling around Two-Bone IK, viewport-based effector placement and character gaze. Added support for solving and baking IK/gaze into animation clips, including parameter validation and Unity capability checks.Added a bigger QA layer for animation. This includes temporal motion analysis, curve discontinuity diagnostics, self-intersection checks and comparison of animation previews. Also added contact baking for things like planted feet/hands and camera-subject action tooling for synchronizing character motion with camera impacts. Added atomic animation transactions and improved rollback/backup handling so multiple animation edits can be applied together and reverted safely when something fails. Refactored the Unity-side animation services around shared sampling, curve writing and rollback helpers. Spent a good amount of time hardening all of this against actual Unity edge cases: Edit Mode requirements, unsupported bridge capabilities, invalid parameters, unknown diagnostic values, quaternion discontinuities, tangent preservation and proper exception handling. Added a Unity EditMode integration test suite covering IK, gaze, contact baking and atomic animation transactions, together with a runner script. Expanded the Python unit tests for the new animation tools and failure cases as well.Also reworked Visora’s visual output. Screenshots, animation previews and video frames now use multimodal MCP image blocks and file artifacts instead of dumping Base64 data into the response. Multi-frame previews can generate contact sheets, and full-resolution artifacts stay on disk. After that I focused heavily on MCP context usage. Compact tool definitions reduced the tool catalog payload significantly, diagnostic tools now have limits/filtering for large skeletons and clips, tool results are compacted, duplicate structured output is removed, and several redundant tools/wrappers were merged or deleted. The tool catalog went from 55 tools down to 44. Merged the two separate video capture tools into a single capture_video workflow and reduced the default screenshot resolution to 720p. Inline images are now automatically downscaled while keeping the full-resolution artifact available separately. Finally tuned the default diagnostic dump sizes further so normal tool calls consume much less agent context and larger detailed dumps are requested only when they are actually needed.
Preview Artifacts, Bridge Recovery & Prefab Workflows Added reproducible animation preview artifacts with stored records and comparison tools for repeatable QA.Improved Unity bridge recovery during reloads/recompiles, added retry hints and safer timeout handling. Added real Unity E2E animation fixtures and reorganized the test suite.Finished the v0.1.3 release, refreshed the README/docs, and started v0.1.4 prefab workflows. Added inspect_prefab_asset and inspect_prefab_overrides with native Unity services, support for nested/variant/model prefabs, structured override inspection, stable IDs, and Python/integration/EditMode test coverage.
Ships:
Built Visora, an MCP server that gives AI agents reliable high-level control over the Unity Editor. The hardest part was making animation and editor workflows safe and predictable: IK, gaze, retargeting, animation QA, bridge reload recovery, prefab inspection, rollback, and reproducible preview artifacts. I’m most proud of how much of the Unity-side behavior is covered by real EditMode/integration tests instead of only mocked Python tests. To test it, use the GitHub release/source, follow the setup guide, connect Visora to a Unity project, and try the MCP tools for animation, scene inspection, previews, or prefab inspection....
|
1793347040.1110332
|
1793433440.1110332
|
|
7336
|
VoidBoard by @AuraMonster | Stardance
|
AuraMonster
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T14:49:37Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a macropad, so that it can do many things. The hardest part was the PCB designing because some parts were confusing.", "repo": "https://github.com/mdmutahhar24-pixel/VoidBoard", "demo": ""}]...
|
[{"post_id": 6549, "ts": "2026 [{"post_id": 6549, "ts": "2026-06-11T00:13:41Z", "hours": 4.3, "text": "What Is Voidboard going to be used for? I am thinking of using VoidBoard for shortcuts, keyboard, and numpad. It may not be obvious, but it’s design coloring was influenced by Hollow Knight. Current Progress: Finished Schematic Finished PCB Finished CAD Finished Firmware Uploaded all necessary files to Github Repository"}]...
|
Title: VoidBoard by @AuraMonster | Stardance
Devl Title: VoidBoard by @AuraMonster | Stardance
Devlogs:
What Is Voidboard going to be used for? I am thinking of using VoidBoard for shortcuts, keyboard, and numpad. It may not be obvious, but it’s design coloring was influenced by Hollow Knight. Current Progress: Finished Schematic Finished PCB Finished CAD Finished Firmware Uploaded all necessary files to Github Repository
Ships:
I made a macropad, so that it can do many things. The hardest part was the PCB designing because some parts were confusing....
|
1793325247.4778106
|
1793411647.4778106
|