|
7601
|
BDX Droid by @haydencwilliams26 | Stardance
|
haydencwilliams26
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BDX Droid by @haydencwilliams26 | Stardance
|
1793227780.42154
|
1793832580.42154
|
|
7602
|
Pipe by @NAHIN | Stardance
|
NAHIN
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pipe by @NAHIN | Stardance
|
1792723786.3175561
|
1793328586.3175561
|
|
7603
|
My first slack bot! by @Marks | Stardance
|
Marks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Marks | Stardance
|
1793148710.9872234
|
1793753510.9872234
|
|
7604
|
NuvolinoProject by @u7013374908 | Stardance
|
u7013374908
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NuvolinoProject by @u7013374908 | Stardance
|
1792709374.201078
|
1793314174.201078
|
|
7605
|
Untitled by @William_Gollihur | Stardance
|
William_Gollihur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @William_Gollihur | Stardance
|
1793353882.1834025
|
1793958682.1834025
|
|
7606
|
Banana Leclerc by @Scrax99 | Stardance
|
Scrax99
|
1
|
3.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T21:11:36Z", "hours": 3.0, "multiplier": 4.97, "payout": 16, "blessing": "neutral", "text": "I built a bot that is supposed to appeal to fans of the f1 driver Charles Leclerc. I wanted to learn how to do projects like this and thought that this would be a good learning opportunity. This bot responds to many different brands and has somewhat of a personality of its own.", "repo": "https://github.com/scraxx99/BananaLeclerc", "demo": "https://discord.com/oauth2/authorize?client_id=1512247188397490268"}]...
|
[{"post_id": 2934, "ts": "2026 [{"post_id": 2934, "ts": "2026-06-05T20:48:59Z", "hours": 1.1811, "text": "Finally finished this wondrous project, and it has a bunch of stuff I wanted to add. I learned so much and am proud with how it came out :)"}, {"post_id": 2836, "ts": "2026-06-05T17:53:28Z", "hours": 0.6847, "text": "Finally got the first working F1 command done!"}, {"post_id": 2732, "ts": "2026-06-05T14:19:04Z", "hours": 0.9733, "text": "Finished all the boiler-plate code for the bot and am now moving on the main menu for what makes it BANANA LECLERC!!!!"}, {"post_id": 2508, "ts": "2026-06-05T01:12:55Z", "hours": 0.5419, "text": "Banana Leclerc is Born"}]...
|
Title: Banana Leclerc by @Scrax99 | Stardance
Dev Title: Banana Leclerc by @Scrax99 | Stardance
Devlogs:
Banana Leclerc is Born
Finished all the boiler-plate code for the bot and am now moving on the main menu for what makes it BANANA LECLERC!!!!
Finally got the first working F1 command done!
Finally finished this wondrous project, and it has a bunch of stuff I wanted to add. I learned so much and am proud with how it came out :)
Ships:
I built a bot that is supposed to appeal to fans of the f1 driver Charles Leclerc. I wanted to learn how to do projects like this and thought that this would be a good learning opportunity. This bot responds to many different brands and has somewhat of a personality of its own....
|
1793260091.3806877
|
1793346491.3806877
|
|
7607
|
Cool Site by @breckenmatzen | Stardance
|
breckenmatzen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cool Site by @breckenmatzen | Stardance
|
1793206301.8617976
|
1793811101.8617976
|
|
7608
|
My awesome macropad! by @Ram_Kondapalli | Stardanc My awesome macropad! by @Ram_Kondapalli | Stardance...
|
Ram_Kondapalli
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ram_Kondapalli | S Title: My awesome macropad! by @Ram_Kondapalli | Stardance...
|
1793271300.6276367
|
1793876100.6276367
|
|
7609
|
My Personal Website by @Ram_Kondapalli | Stardance
|
Ram_Kondapalli
|
0
|
0.27
|
0
|
[]
|
[{"post_id": 2503, "ts": "2026 [{"post_id": 2503, "ts": "2026-06-05T01:03:25Z", "hours": 0.2678, "text": "Hello, I am working on my first personal website. It will host all my software and hardware projects, especially the ones I will be making during Stardance"}]...
|
Title: My Personal Website by @Ram_Kondapalli | St Title: My Personal Website by @Ram_Kondapalli | Stardance
Devlogs:
Hello, I am working on my first personal website. It will host all my software and hardware projects, especially the ones I will be making during Stardance...
|
1793231786.8897066
|
1793836586.8897066
|
|
7610
|
Untitled project by @Tobias | Stardance
|
Tobias
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Tobias | Stardance
|
1793227935.7068036
|
1793832735.7068036
|
|
7611
|
Untitled by @William_Gollihur | Stardance
|
William_Gollihur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @William_Gollihur | Stardance
|
1793271004.513266
|
1793875804.513266
|
|
7612
|
Untitled by @William_Gollihur | Stardance
|
William_Gollihur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @William_Gollihur | Stardance
|
1793404145.5052054
|
1794008945.5052054
|
|
7613
|
Image enhancer by @cristobal | Stardance
|
cristobal
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T00:34:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made something I always thought about making that was a type of code that would copy pixels of an image and multiply them to essentially have a “higher resolution image”. This was my first project of coding something original that I made so it was pretty hard to know what to do next and how to implement things, so I did use AI to give me steps and tell me how to fix some problems, still I didn’t use it to write any part of my code. Even though this version of my project is complete, I do plan to make new versions to make it better since in some parts it is pretty confusing. Stil if you show interest in my journey I would appriciate tips of what I cat improve on. (Picture on the left is the original photo of my cat’s eye. Right picture is the same picture after the enhancer)", "repo": "https://github.com/cristobalnov3-blip/Image-enhancer", "demo": ""}]...
|
[{"post_id": 4663, "ts": "2026 [{"post_id": 4663, "ts": "2026-06-08T02:06:21Z", "hours": 1.5122, "text": "I’m working on a type of ‘image enhancer’ but I’m still figuiring it out"}]...
|
Title: Image enhancer by @cristobal | Stardance
D Title: Image enhancer by @cristobal | Stardance
Devlogs:
I’m working on a type of ‘image enhancer’ but I’m still figuiring it out
Ships:
I made something I always thought about making that was a type of code that would copy pixels of an image and multiply them to essentially have a “higher resolution image”. This was my first project of coding something original that I made so it was pretty hard to know what to do next and how to implement things, so I did use AI to give me steps and tell me how to fix some problems, still I didn’t use it to write any part of my code. Even though this version of my project is complete, I do plan to make new versions to make it better since in some parts it is pretty confusing. Stil if you show interest in my journey I would appriciate tips of what I cat improve on. (Picture on the left is the original photo of my cat’s eye. Right picture is the same picture after the enhancer)...
|
1793224185.53766
|
1793310585.53766
|
|
7614
|
UniScan by @dexrn | Stardance
|
dexrn
|
0
|
239.34
|
0
|
[]
|
[{"post_id": 81208, "ts": "202 [{"post_id": 81208, "ts": "2026-10-20T09:19:45Z", "hours": 9.0592, "text": "Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such."}, {"post_id": 80144, "ts": "2026-10-16T11:58:28Z", "hours": 3.9517, "text": "Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!"}, {"post_id": 79731, "ts": "2026-10-15T07:54:37Z", "hours": 6.7103, "text": "New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)"}, {"post_id": 77782, "ts": "2026-10-08T08:12:30Z", "hours": 5.2025, "text": "Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow."}, {"post_id": 76647, "ts": "2026-10-04T07:57:18Z", "hours": 11.0072, "text": "Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release."}, {"post_id": 73501, "ts": "2026-09-25T07:49:46Z", "hours": 9.2694, "text": "getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway"}, {"post_id": 73041, "ts": "2026-09-24T08:06:31Z", "hours": 11.4114, "text": "For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process."}, {"post_id": 70021, "ts": "2026-09-18T09:20:00Z", "hours": 2.1572, "text": "Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling)."}, {"post_id": 69912, "ts": "2026-09-18T01:47:47Z", "hours": 10.1983, "text": "Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)"}, {"post_id": 67990, "ts": "2026-09-14T10:18:38Z", "hours": 0.7964, "text": "And now we can finally start seeing the fruits of our labor"}, {"post_id": 67864, "ts": "2026-09-14T04:29:36Z", "hours": 7.07, "text": "IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries"}, {"post_id": 65237, "ts": "2026-09-10T07:13:02Z", "hours": 3.4144, "text": "Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)"}, {"post_id": 63401, "ts": "2026-09-07T06:50:20Z", "hours": 5.6181, "text": "Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer."}, {"post_id": 61349, "ts": "2026-09-04T07:02:15Z", "hours": 5.4761, "text": "While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar"}, {"post_id": 60741, "ts": "2026-09-03T09:41:59Z", "hours": 2.8389, "text": "The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this."}, {"post_id": 60674, "ts": "2026-09-03T06:03:58Z", "hours": 7.28, "text": "I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it."}, {"post_id": 59441, "ts": "2026-09-01T09:14:39Z", "hours": 2.6186, "text": "A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it."}, {"post_id": 58714, "ts": "2026-08-31T07:59:18Z", "hours": 3.1222, "text": "Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can."}, {"post_id": 56408, "ts": "2026-08-28T05:18:41Z", "hours": 1.9061, "text": "UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)"}, {"post_id": 55440, "ts": "2026-08-27T08:29:55Z", "hours": 1.0639, "text": "I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way"}, {"post_id": 55410, "ts": "2026-08-27T06:57:46Z", "hours": 0.9983, "text": "Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main."}, {"post_id": 55287, "ts": "2026-08-27T00:47:49Z", "hours": 2.4511, "text": "Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down."}, {"post_id": 54227, "ts": "2026-08-25T03:48:43Z", "hours": 5.8811, "text": "Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc."}, {"post_id": 53539, "ts": "2026-08-24T04:08:25Z", "hours": 3.6514, "text": "Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!"}, {"post_id": 52159, "ts": "2026-08-22T07:56:54Z", "hours": 1.7483, "text": "Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute"}, {"post_id": 52085, "ts": "2026-08-22T04:54:12Z", "hours": 2.8142, "text": "working on fixing the fact that you can’t really make remotes"}, {"post_id": 51645, "ts": "2026-08-21T13:05:32Z", "hours": 3.4047, "text": "FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me"}, {"post_id": 51484, "ts": "2026-08-21T06:59:47Z", "hours": 0.3158, "text": "Much nicer loading screen"}, {"post_id": 51332, "ts": "2026-08-20T22:40:12Z", "hours": 2.3814, "text": "Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)"}, {"post_id": 50726, "ts": "2026-08-20T02:11:03Z", "hours": 1.7997, "text": "UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)"}, {"post_id": 50685, "ts": "2026-08-20T00:10:14Z", "hours": 2.6617, "text": "FINALLY I GOT OPFS WORKING GG"}, {"post_id": 50163, "ts": "2026-08-19T08:34:19Z", "hours": 0.6781, "text": "OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()"}, {"post_id": 50120, "ts": "2026-08-19T06:14:18Z", "hours": 1.0522, "text": "I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later."}, {"post_id": 50073, "ts": "2026-08-19T03:53:07Z", "hours": 1.5272, "text": "Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me."}, {"post_id": 49405, "ts": "2026-08-18T06:53:24Z", "hours": 0.5689, "text": "Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning."}, {"post_id": 48708, "ts": "2026-08-17T06:57:16Z", "hours": 2.0306, "text": "Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon."}, {"post_id": 47901, "ts": "2026-08-16T05:27:47Z", "hours": 1.0794, "text": "Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring."}, {"post_id": 47322, "ts": "2026-08-15T06:23:55Z", "hours": 1.4389, "text": "Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!"}, {"post_id": 46716, "ts": "2026-08-14T05:00:44Z", "hours": 0.8869, "text": "spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think"}, {"post_id": 46099, "ts": "2026-08-13T02:11:59Z", "hours": 5.3278, "text": "UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor."}, {"post_id": 44449, "ts": "2026-08-10T06:23:32Z", "hours": 11.9661, "text": "Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions."}, {"post_id": 28082, "ts": "2026-07-14T03:34:16Z", "hours": 15.6422, "text": "Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one."}, {"post_id": 18787, "ts": "2026-06-30T00:07:21Z", "hours": 34.5525, "text": "so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time."}, {"post_id": 7411, "ts": "2026-06-12T10:42:10Z", "hours": 11.1469, "text": "FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel"}, {"post_id": 6029, "ts": "2026-06-10T03:40:35Z", "hours": 2.2417, "text": "Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)"}, {"post_id": 5432, "ts": "2026-06-09T06:21:20Z", "hours": 0.9203, "text": "didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it"}, {"post_id": 5404, "ts": "2026-06-09T04:53:56Z", "hours": 10.0017, "text": "testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere"}]...
|
Title: UniScan by @dexrn | Stardance
Devlogs:
tes Title: UniScan by @dexrn | Stardance
Devlogs:
testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere
didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it
Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)
FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel
so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time.
Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one.
Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions.
UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor.
spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think
Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!
Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring.
Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon.
Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning.
Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me.
I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later.
OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
FINALLY I GOT OPFS WORKING GG
UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)
Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)
Much nicer loading screen
FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me
working on fixing the fact that you can’t really make remotes
Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute
Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!
Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc.
Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down.
Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main.
I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way
UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)
Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can.
A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it.
I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it.
The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this.
While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar
Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer.
Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)
IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries
And now we can finally start seeing the fruits of our labor
Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)
Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling).
For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process.
getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway
Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release.
Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow.
New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)
Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!
Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such....
|
1792785158.047574
|
1793389958.047574
|
|
7615
|
My first slack bot! by @Amina_The_Possum | Stardan My first slack bot! by @Amina_The_Possum | Stardance...
|
Amina_The_Possum
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Amina_The_Possum | Title: My first slack bot! by @Amina_The_Possum | Stardance...
|
1793354160.1234956
|
1793958960.1234956
|
|
7616
|
My awesome macropad! by @Kayla | Stardance
|
Kayla
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Kayla | Stardance
|
1793357603.6990325
|
1793962403.6990325
|
|
7617
|
Long-range VTOL Drone by @redshanghai | Stardance
|
redshanghai
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Long-range VTOL Drone by @redshanghai | Sta Title: Long-range VTOL Drone by @redshanghai | Stardance...
|
1793188080.6970098
|
1793792880.6970098
|
|
7618
|
AI Model by @Neerav | Stardance
|
Neerav
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T17:11:34Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an Ai model for people to be able to complete their daily tasks with less time. Syrox AI can help with school work like math homework and other stuff. The thing that was challenging for me was to decide what type of UI did I want for Syrox AI.", "repo": "https://github.com/Syrox-1x/Syrox-Ai", "demo": "https://syroxai-sidrq8ge.manus.space"}]...
|
[{"post_id": 18466, "ts": "202 [{"post_id": 18466, "ts": "2026-06-29T17:05:52Z", "hours": 0.4992, "text": "Just Updated Syrox Ai to be able to log into an account. Because to be able to save chats people need to be logged into an account."}, {"post_id": 14549, "ts": "2026-06-23T18:22:49Z", "hours": 0.45, "text": "Syrox Ai"}]...
|
Title: AI Model by @Neerav | Stardance
Devlogs:
S Title: AI Model by @Neerav | Stardance
Devlogs:
Syrox Ai
Just Updated Syrox Ai to be able to log into an account. Because to be able to save chats people need to be logged into an account.
Ships:
I made an Ai model for people to be able to complete their daily tasks with less time. Syrox AI can help with school work like math homework and other stuff. The thing that was challenging for me was to decide what type of UI did I want for Syrox AI....
|
1793325295.302262
|
1793411695.302262
|
|
7619
|
Untitled by @Coder_SPS | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Coder_SPS | Stardance
|
1792803249.823629
|
1793408049.823629
|
|
7620
|
My first slack bot! by @aquaritic | Stardance
|
aquaritic
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @aquaritic | Stardan Title: My first slack bot! by @aquaritic | Stardance...
|
1792770515.5898023
|
1793375315.5898023
|
|
7621
|
2D Writer by @ved-patel226 | Stardance
|
ved-patel226
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 2D Writer by @ved-patel226 | Stardance
|
1792752784.4369273
|
1793357584.4369273
|
|
7622
|
My FIRST Python Project by @Burst | Stardance
|
Burst
|
0
|
0.7
|
0
|
[]
|
[{"post_id": 2494, "ts": "2026 [{"post_id": 2494, "ts": "2026-06-05T00:43:39Z", "hours": 0.6975, "text": "I started my python platformer game using a guide on youtube. This is my first python project overall. My goal is for it to be a functional game at the end. I’m using pygame and learning several features during this process. pygame.init() intiates the process window is t 1000x800px background loads from space.jpg and is scaled to the window main loop handles QUIT draw(player) renders the background and a red player rectangle (not functional yet)"}]...
|
Title: My FIRST Python Project by @Burst | Stardan Title: My FIRST Python Project by @Burst | Stardance
Devlogs:
I started my python platformer game using a guide on youtube. This is my first python project overall. My goal is for it to be a functional game at the end. I’m using pygame and learning several features during this process. pygame.init() intiates the process window is t 1000x800px background loads from space.jpg and is scaled to the window main loop handles QUIT draw(player) renders the background and a red player rectangle (not functional yet)...
|
1793418506.045744
|
1794023306.045744
|
|
7623
|
Mechanical hand by @xander | Stardance
|
xander
|
0
|
11.12
|
0
|
[]
|
[{"post_id": 68359, "ts": "202 [{"post_id": 68359, "ts": "2026-09-15T00:32:42Z", "hours": 2.7019, "text": "Dev log #3- The main thing I was working on for the last few things with wiring the fingers and working on getting the friction down."}, {"post_id": 8835, "ts": "2026-06-14T18:10:49Z", "hours": 7.1456, "text": "Devlog #2 - What I worked on- I worked on printing it all out and actually building the hand, while also trying to solve some of the issues I mention later. Problems-I have had some pretty difficult things to deal with, my main issue I am having is I am trying to guide the fishing line better than I have been so that I can have equal pulling force from the finger and so that the tendons are being pulled at equal lengths. Plans- I have spent some time modeling a fishing line guide that clamps around the servo arm. I really am hoping this will work but I will need to figure out how to minimize the space they are taking up as I want it al to fit together while being decently serviceable and clean looking."}, {"post_id": 5688, "ts": "2026-06-09T15:49:13Z", "hours": 1.2756, "text": "Dev log-1 Hi guys! I started this project about a year ago with the goal of creating a 3d printable hand that is able to be controlled by mimicking my hand through a camera. Right now I have modeled and printed all of the fingers to a point where I can move on with the actual electronics. What I worked on- I worked on creating my assembly document in Onshape to be able to see what the movement would look like. This came at a challenge though, as I have never used the assembly function of Onshape. What I plan to work on- Today I plan to work on modeling and printing the wrist area of the hand to mount most of the electronics. Advise- I plan on using Arduino as its the only thing that I have, but I need to figure out how to convert a hand tracking software in python to something that I am able to use with the Arduino."}]...
|
Title: Mechanical hand by @xander | Stardance
Dev Title: Mechanical hand by @xander | Stardance
Devlogs:
Dev log-1 Hi guys! I started this project about a year ago with the goal of creating a 3d printable hand that is able to be controlled by mimicking my hand through a camera. Right now I have modeled and printed all of the fingers to a point where I can move on with the actual electronics. What I worked on- I worked on creating my assembly document in Onshape to be able to see what the movement would look like. This came at a challenge though, as I have never used the assembly function of Onshape. What I plan to work on- Today I plan to work on modeling and printing the wrist area of the hand to mount most of the electronics. Advise- I plan on using Arduino as its the only thing that I have, but I need to figure out how to convert a hand tracking software in python to something that I am able to use with the Arduino.
Devlog #2 - What I worked on- I worked on printing it all out and actually building the hand, while also trying to solve some of the issues I mention later. Problems-I have had some pretty difficult things to deal with, my main issue I am having is I am trying to guide the fishing line better than I have been so that I can have equal pulling force from the finger and so that the tendons are being pulled at equal lengths. Plans- I have spent some time modeling a fishing line guide that clamps around the servo arm. I really am hoping this will work but I will need to figure out how to minimize the space they are taking up as I want it al to fit together while being decently serviceable and clean looking.
Dev log #3- The main thing I was working on for the last few things with wiring the fingers and working on getting the friction down....
|
1792766880.8759265
|
1793371680.8759265
|
|
7624
|
ScratchBloxius by @f_3 | Stardance
|
f_3
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ScratchBloxius by @f_3 | Stardance
|
1792788437.2751887
|
1793393237.2751887
|
|
7625
|
compact mechanical cat ears by @Lawnard | Stardanc compact mechanical cat ears by @Lawnard | Stardance...
|
Lawnard
|
0
|
19.53
|
0
|
[]
|
[{"post_id": 66554, "ts": "202 [{"post_id": 66554, "ts": "2026-09-12T12:04:42Z", "hours": 3.3717, "text": "so i decided to make a custom pcb im also going to start designing the final version btw, will my charging circuit explode?"}, {"post_id": 65712, "ts": "2026-09-11T01:45:52Z", "hours": 1.305, "text": "i started work on the pcb for the full size wearable and apparently i hate myself because someone decided it would be a good idea to make the battery charging circuit from scratch (1 ak)"}, {"post_id": 63813, "ts": "2026-09-07T19:40:08Z", "hours": 2.7947, "text": "i finished the full scale v1 prototype(left is full size ear, right is the ear used on the previous prototype"}, {"post_id": 62554, "ts": "2026-09-06T00:23:53Z", "hours": 0.7689, "text": "so i made v3.5, there’s some rope tension issues, but I think i can move on to make a full scale prototype"}, {"post_id": 61884, "ts": "2026-09-05T01:32:28Z", "hours": 2.1725, "text": "I did a bunch of printing today, the v3 servo assembly is done, I still need to remake the v3.5 base because of tolerances"}, {"post_id": 48140, "ts": "2026-08-16T13:08:00Z", "hours": 1.1283, "text": "here’s the v3 prototype design, i’ve printed a few test prints but i still need to figure out how to hold the bowden tubes"}, {"post_id": 37752, "ts": "2026-07-30T17:44:07Z", "hours": 2.4747, "text": "i finished the v3 design, i still need to buy the ptfe tubes for the bowden mechanisms. V3 is much more compact than v2 and this time the servo is actually secured to the servo mount (turns out you needs to click “force send heartbeat” to update your time for the onshape wakatime addon)"}, {"post_id": 37332, "ts": "2026-07-29T23:41:16Z", "hours": 1.3106, "text": "I made my first prototype , I’ll make the v3 design next with a bowden cable, the AMA with jared issacman was very fun.(if the video doesnt work for you, there’s a image on the second slide) ps: do you guys think 2 cables in a single ptfe tube will work and not get tangled. Oh yeah, and should i harvest this thing for parts"}, {"post_id": 36160, "ts": "2026-07-28T02:13:30Z", "hours": 2.7381, "text": "I accidentally posted this already in my other project, i already deleted that devlog. This is the v2 design for the prototype, v1 was kinda unpractical, this version only uses 1 servo. I’ll start printing it tomorrow ps: how do you export lookout timelapses"}, {"post_id": 27992, "ts": "2026-07-13T23:13:48Z", "hours": 0.9008, "text": "devlog #2: I continued designing the prototype, here’s a picture :3 (how do i upload lookout time lapses)"}, {"post_id": 26880, "ts": "2026-07-11T22:26:11Z", "hours": 0.5611, "text": "I started on the prototype design, still need to work on it more. I also need to learn how the heck a microcontroller works"}]...
|
Title: compact mechanical cat ears by @Lawnard | S Title: compact mechanical cat ears by @Lawnard | Stardance
Devlogs:
I started on the prototype design, still need to work on it more. I also need to learn how the heck a microcontroller works
devlog #2: I continued designing the prototype, here’s a picture :3 (how do i upload lookout time lapses)
I accidentally posted this already in my other project, i already deleted that devlog. This is the v2 design for the prototype, v1 was kinda unpractical, this version only uses 1 servo. I’ll start printing it tomorrow ps: how do you export lookout timelapses
I made my first prototype , I’ll make the v3 design next with a bowden cable, the AMA with jared issacman was very fun.(if the video doesnt work for you, there’s a image on the second slide) ps: do you guys think 2 cables in a single ptfe tube will work and not get tangled. Oh yeah, and should i harvest this thing for parts
i finished the v3 design, i still need to buy the ptfe tubes for the bowden mechanisms. V3 is much more compact than v2 and this time the servo is actually secured to the servo mount (turns out you needs to click “force send heartbeat” to update your time for the onshape wakatime addon)
here’s the v3 prototype design, i’ve printed a few test prints but i still need to figure out how to hold the bowden tubes
I did a bunch of printing today, the v3 servo assembly is done, I still need to remake the v3.5 base because of tolerances
so i made v3.5, there’s some rope tension issues, but I think i can move on to make a full scale prototype
i finished the full scale v1 prototype(left is full size ear, right is the ear used on the previous prototype
i started work on the pcb for the full size wearable and apparently i hate myself because someone decided it would be a good idea to make the battery charging circuit from scratch (1 ak)
so i decided to make a custom pcb im also going to start designing the final version btw, will my charging circuit explode?...
|
1793357727.2109475
|
1793962527.2109475
|
|
7626
|
Project Lodestone by @dexrn | Stardance
|
dexrn
|
0
|
6.21
|
0
|
[]
|
[{"post_id": 75820, "ts": "202 [{"post_id": 75820, "ts": "2026-10-01T08:00:50Z", "hours": 6.2139, "text": "Mine V3 WIP soon! Working on a nicer api for JOS, now fields can be directly deserialized into a native class. JOS is a project made primarily for reading and writing MineV3, which is serialized via ObjectOutputStream in the vanilla game. However, this will work for ANY object outputted by ObjectOutputStream once finished, and will output in the same format as well. https://github.com/team-lodestone/JavaObjectStreams"}]...
|
Title: Project Lodestone by @dexrn | Stardance
De Title: Project Lodestone by @dexrn | Stardance
Devlogs:
Mine V3 WIP soon! Working on a nicer api for JOS, now fields can be directly deserialized into a native class. JOS is a project made primarily for reading and writing MineV3, which is serialized via ObjectOutputStream in the vanilla game. However, this will work for ANY object outputted by ObjectOutputStream once finished, and will output in the same format as well. https://github.com/team-lodestone/JavaObjectStreams...
|
1793199338.2916398
|
1793804138.2916398
|
|
7627
|
WebOS by @Kayla | Stardance
|
Kayla
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WebOS by @Kayla | Stardance
|
1793263856.0896091
|
1793868656.0896091
|
|
7628
|
My awesome macropad! by @Kieran- | Stardance
|
Kieran-
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Kieran- | Stardanc Title: My awesome macropad! by @Kieran- | Stardance...
|
1793292484.682988
|
1793897284.682988
|
|
7629
|
My awesome macropad! by @xander | Stardance
|
xander
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @xander | Stardance
|
1793310660.5514963
|
1793915460.5514963
|
|
7630
|
Kazi's Hackpad (3x3) by @kaziofmeridian | Star Kazi's Hackpad (3x3) by @kaziofmeridian | Stardance...
|
kaziofmeridian
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T04:50:07Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "KaziPad What is it? The KaziPad is a 9-key, 3x3 macropad with an OLED screen and a rotary encoder. Features: The buttons are mapped to keyboard shortcuts in 2 separate layers using KMK firmware. The layers are toggled by pressing the rotary encoder, and twisting the rotary encoder adjusts the volume. The OLED screen displays which layer is toggled Challenges: I had challenges every step of the way since this is the first project I’ve ever developed myself. One big challenge I had was with wiring and setting up my PCB. Since it was my first time, I had no idea how the wiring worked, and was very confused by the tangle of webs. Overtime, I began to get over the learning curve and understood how to connect the correct things to each other. I created 4 different versions of my PCB as I wanted to make it as good as possible despite my lack of experience. Another huge challenge was dealing with the firmware. I started out attempting to use KMK firmware, but I couldn’t understand the docs at first. I then attempted to switch over to QMK, and after a long time of not being able to create my own layout, I switched back to KMK. I spent a long time reading and understanding the docs, and now I am at a point where I understand it! Other Info: This project was created as a part of the Hackpad mission which means after shipping, I hope to receive the parts to make it in real life! Since I do not have the parts yet, the demo provided is a video preview of the assembled hackpad. For more details on anything, feel free to comment, or message me on slack, @kaziofmeridian .", "repo": "https://github.com/kaziofmeridian/KaziPad", "demo": ""}]...
|
[{"post_id": 5379, "ts": "2026 [{"post_id": 5379, "ts": "2026-06-09T03:55:19Z", "hours": 0.3017, "text": "—Devlog 5 - Hackpad — My hackpad is officially done! I am naming it The KaziPad . I have just updated the repository , but below is a little sneak peak of its features. I believe it is ready to ship! 3x3 Matrix of keys OLED display that tells you which layer you are on 1 Rotary Encoder to control the volume + toggles keyboard layer KMK firmware"}, {"post_id": 5235, "ts": "2026-06-08T22:55:26Z", "hours": 2.0506, "text": "—Devlog 4 - Hackpad— What I did: I successfully added screw holes into my case with no issues! Then, I attempted to make my firmware with QMK, but I had a lot of trouble configuring the layout, and I switched over to KMK. Below is some of my code. Current Functions Of Firmware: -There are two separate layers on my keyboard, one is a numpad, the other has letters (Both act as placeholders). -The rotary encoder functions as a volume knob, and the button toggles between the 2 separate layers. What’s Next? -I need to finalize my firmware -I should create my repository and gather all requirements -And I am very excited because my project is almost ready to ship, thanks for listening!"}, {"post_id": 4644, "ts": "2026-06-08T01:24:31Z", "hours": 4.8581, "text": "—Devlog 3 -hackpadd— I created a case for my PCB with fusion, and I found out how to add the 3d models of my components onto the PCB. This is V4 of my PCB because I didn’t like the arrangement of my last one, and I made it a lot smaller. Next, I have to make my screw holes and make the firmwareeee. I will update you guys on how that goes soon!"}, {"post_id": 3271, "ts": "2026-06-06T03:43:27Z", "hours": 2.6967, "text": "— Hackpad - Devlog 2 — I finally finished my first PCB design! The wiring isn’t pretty, but I’m just proud I finished it. I had to restart like 3 times."}, {"post_id": 2858, "ts": "2026-06-05T18:29:04Z", "hours": 1.6506, "text": "Hackpad - My First Project Ever Devlog 1 My hackpad is going to include a 9 keys arranged in a 3x3 matrix, one rotary encoder, and an OLED screen. Since my project utilizes 9 keys, I needed to create a matrix to properly organize all of the inputs. Making the matrix took the longest time, because I had to learn how to stop it from becoming one big web. Through making my matrix, I learned how to use net labels in order to better organize my wires which was a great help with everything else. Finally, I roughly arranged all of the components in the PCB editor, and will start making my tracks soon. This is also my first time logging hours, so a lot of my time spent was not actually accounted for. My real amount of hours spent was ~4."}]...
|
Title: Kazi's Hackpad (3x3) by @kaziofmeridian Title: Kazi's Hackpad (3x3) by @kaziofmeridian | Stardance
Devlogs:
Hackpad - My First Project Ever Devlog 1 My hackpad is going to include a 9 keys arranged in a 3x3 matrix, one rotary encoder, and an OLED screen. Since my project utilizes 9 keys, I needed to create a matrix to properly organize all of the inputs. Making the matrix took the longest time, because I had to learn how to stop it from becoming one big web. Through making my matrix, I learned how to use net labels in order to better organize my wires which was a great help with everything else. Finally, I roughly arranged all of the components in the PCB editor, and will start making my tracks soon. This is also my first time logging hours, so a lot of my time spent was not actually accounted for. My real amount of hours spent was ~4.
— Hackpad - Devlog 2 — I finally finished my first PCB design! The wiring isn’t pretty, but I’m just proud I finished it. I had to restart like 3 times.
—Devlog 3 -hackpadd— I created a case for my PCB with fusion, and I found out how to add the 3d models of my components onto the PCB. This is V4 of my PCB because I didn’t like the arrangement of my last one, and I made it a lot smaller. Next, I have to make my screw holes and make the firmwareeee. I will update you guys on how that goes soon!
—Devlog 4 - Hackpad— What I did: I successfully added screw holes into my case with no issues! Then, I attempted to make my firmware with QMK, but I had a lot of trouble configuring the layout, and I switched over to KMK. Below is some of my code. Current Functions Of Firmware: -There are two separate layers on my keyboard, one is a numpad, the other has letters (Both act as placeholders). -The rotary encoder functions as a volume knob, and the button toggles between the 2 separate layers. What’s Next? -I need to finalize my firmware -I should create my repository and gather all requirements -And I am very excited because my project is almost ready to ship, thanks for listening!
—Devlog 5 - Hackpad — My hackpad is officially done! I am naming it The KaziPad . I have just updated the repository , but below is a little sneak peak of its features. I believe it is ready to ship! 3x3 Matrix of keys OLED display that tells you which layer you are on 1 Rotary Encoder to control the volume + toggles keyboard layer KMK firmware
Ships:
KaziPad What is it? The KaziPad is a 9-key, 3x3 macropad with an OLED screen and a rotary encoder. Features: The buttons are mapped to keyboard shortcuts in 2 separate layers using KMK firmware. The layers are toggled by pressing the rotary encoder, and twisting the rotary encoder adjusts the volume. The OLED screen displays which layer is toggled Challenges: I had challenges every step of the way since this is the first project I’ve ever developed myself. One big challenge I had was with wiring and setting up my PCB. Since it was my first time, I had no idea how the wiring worked, and was very confused by the tangle of webs. Overtime, I began to get over the learning curve and understood how to connect the correct things to each other. I created 4 different versions of my PCB as I wanted to make it as good as possible despite my lack of experience. Another huge challenge was dealing with the firmware. I started out attempting to use KMK firmware, but I couldn’t understand the docs at first. I then attempted to switch over to QMK, and after a long time of not being able to create my own layout, I switched back to KMK. I spent a long time reading and understanding the docs, and now I am at a point where I understand it! Other Info: This project was created as a part of the Hackpad mission which means after shipping, I hope to receive the parts to make it in real life! Since I do not have the parts yet, the demo provided is a video preview of the assembled hackpad. For more details on anything, feel free to comment, or message me on slack, @kaziofmeridian ....
|
1793285252.184882
|
1793371652.184882
|
|
7631
|
My first slack bot! by @Justin-F | Stardance
|
Justin-F
|
1
|
3.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T04:53:34Z", "hours": 3.0, "multiplier": 2.15, "payout": 7, "blessing": "neutral", "text": "What did you make? A 24/7 Slack bot built in Python that responds to custom slash commands like /slck-coin , /slck-dice , /slck-ping , and more. Runs on a nest server using Socket Mode. What was challenging? The guide was in JavaScript so I had to convert everything to Python first. Getting the bot installed into an actual Slack workspace was also way more difficult than expected because I did not know what to do. What are you proud of? After AI explained and taught me the syntax that I needed I mostly did it myself. What should people know to test it? You can just click on my demo link and test it by joining the slckbot channel. You’ll need your own Slack app and workspace. Full setup is in the README — once you add your tokens to .env, just run python slackbot.py, invite the bot to a channel, and try any /slck- command.", "repo": "https://github.com/JF3800/slackbot-project", "demo": "https://hackclub.enterprise.slack.com/archives/C0BAXQB8BUK"}]...
|
[{"post_id": 10424, "ts": "202 [{"post_id": 10424, "ts": "2026-06-17T04:09:12Z", "hours": 0.7136, "text": "#Devlog #2 I actually did this a while ago but I was waiting for the ship function and I also did not have a demo link. I added 2 things: #1: I added slck-motivate #2: I added slck-shrug I also updated /slck-list . I removed /slck-time because it took the local time of the nest server rather than whichever device /slck-time was run on. The code is still in VS code but /slck-time is removed from the commands. I could not post devlogs because I had a bug where hackatime and stardance challenge were not syncing properly but It got fixed."}, {"post_id": 5362, "ts": "2026-06-09T03:10:43Z", "hours": 2.4494, "text": "Finished 5 commands and runs 24/7. Now I just need a demo website. :p"}]...
|
Title: My first slack bot! by @Justin-F | Stardanc Title: My first slack bot! by @Justin-F | Stardance
Devlogs:
Finished 5 commands and runs 24/7. Now I just need a demo website. :p
#Devlog #2 I actually did this a while ago but I was waiting for the ship function and I also did not have a demo link. I added 2 things: #1: I added slck-motivate #2: I added slck-shrug I also updated /slck-list . I removed /slck-time because it took the local time of the nest server rather than whichever device /slck-time was run on. The code is still in VS code but /slck-time is removed from the commands. I could not post devlogs because I had a bug where hackatime and stardance challenge were not syncing properly but It got fixed.
Ships:
What did you make? A 24/7 Slack bot built in Python that responds to custom slash commands like /slck-coin , /slck-dice , /slck-ping , and more. Runs on a nest server using Socket Mode. What was challenging? The guide was in JavaScript so I had to convert everything to Python first. Getting the bot installed into an actual Slack workspace was also way more difficult than expected because I did not know what to do. What are you proud of? After AI explained and taught me the syntax that I needed I mostly did it myself. What should people know to test it? You can just click on my demo link and test it by joining the slckbot channel. You’ll need your own Slack app and workspace. Full setup is in the README — once you add your tokens to .env, just run python slackbot.py, invite the bot to a channel, and try any /slck- command....
|
1793224531.8316677
|
1793310931.8316677
|
|
7632
|
Dave by @Nicormu | Stardance
|
Nicormu
|
2
|
3.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T01:08:49Z", "hours": 1.0, "multiplier": 3.97, "payout": 5, "blessing": "neutral", "text": "🚀 Dave — Part 2 I went back to Dave and actually gave him feelings. The original version was just a collection of random responses living in Slack. This update makes him feel like someone with opinions. Pre-written arrays of snark I wrote at 2 AM: /dave-debater argues against anything you say, /dave-existential questions his own purpose (he doesn’t have one), and /dave-compliment is the only wholesome thing in this entire project. Spent more time fighting Nest’s SSH passphrase out of nowhere than writing code. journalctl –user -u dave.service became my nemesis about three times that day. Toggling restart commands blindly until something stuck. But now it runs, and there’s a bot in our workspace that roasts people for no reason. That’s enough. Try /dave-debater I love coding or /dave-existential. 😄", "repo": "https://github.com/Nicormu/DaveTheSlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BBS8D77DW"}, {"ship_num": 2, "ts": "2026-06-16T03:08:18Z", "hours": 2.0, "multiplier": 4.97, "payout": 7, "blessing": "neutral", "text": "I made Dave, a Slack bot with a bunch of fun slash commands that can tell jokes, give questionable life advice, play small games, and generally make a workspace a little less boring. The hardest part wasn’t coding the commands—it was getting the bot deployed 24/7 on a Nest server. I got stuck on an SSH passphrase issue that I don’t even remember setting, and I spent quite a while troubleshooting it. The deployment guide was also a bit confusing for me at some points, so getting everything running reliably took more effort than expected. I’m proud that I managed to get the whole thing working end-to-end: Slack integration, command handling, and deployment. It was also fun giving the bot its own personality instead of making it feel like a generic utility. To test it, add the bot to a Slack workspace and try some of the /dave-* commands. Most of them are designed to be playful, so don’t expect serious answers from Dave. 😄", "repo": "https://github.com/Nicormu/DaveTheSlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BBS8D77DW"}]...
|
[{"post_id": 45496, "ts": "202 [{"post_id": 45496, "ts": "2026-08-12T01:03:47Z", "hours": 0.8764, "text": "What’s new this version: /dave-mood — Dave describes his emotional state (spoiler: it’s not good) /dave-advice — Terrible life advice for real-life problems /dave-compliment — Because some days you need to hear nice things /dave-fortune — Fortune cookie wisdom for developers /dave-debater — Feed Dave an opinion and watch him tear it apart /dave-decide — Let Dave make your decisions when you can’t /dave-existential — Deep thoughts from a very shallow bot"}, {"post_id": 10358, "ts": "2026-06-17T01:14:23Z", "hours": 0.3092, "text": "Devlog #4 I expanded Dave with several new commands, including coin flips, random numbers, quotes, roasts, uptime monitoring, and usage statistics. These additions make the bot more interactive while keeping its sarcastic personality. I also added command tracking and improved error handling, making it easier to monitor the bot and diagnose issues when something goes wrong. With these improvements, Dave feels more complete and has a stronger foundation for future features."}, {"post_id": 9664, "ts": "2026-06-16T02:19:07Z", "hours": 0.3778, "text": "Devlog #3 This week I finished migrating the bot from its old DSB branding to Dave. All commands and references were updated to use the new name, making the project feel much more consistent. I also set up Dave to run as a persistent service on Nest, which means it now stays online 24/7 instead of stopping when my SSH session ends. This makes the bot much more reliable and ready for regular use."}, {"post_id": 8386, "ts": "2026-06-13T22:58:29Z", "hours": 0.3356, "text": "Devlog #2 - Meet Dave and the Deployment Struggle I finally gave the bot a name, a fresh look, and a sassy personality. This week I implemented Dave’s new pixel-art avatar, a /dsb-study timer, a shower thoughts command, and hidden Easter eggs that roast users in the chat. The biggest challenge was deploying the bot 24/7. I struggled with cloud hosting because every time the server restarts, all the active study timers get completely wiped out. Along the way, I became more comfortable using regex listeners and writing dynamic responses. Next, I want to fix the deployment, connect a database to save timers, and smooth out API errors."}, {"post_id": 4260, "ts": "2026-06-07T14:51:15Z", "hours": 0.8194, "text": "Devlog #1 - First Working Version of My Slack Bot I finally got the first version of my Slack bot working. This week I implemented four slash commands: a help menu, a latency check, a random cat fact command, and a random joke command. I also integrated external APIs and added basic error handling to prevent failures when an API is unavailable. The biggest challenge was understanding Slack’s command flow. I spent quite a while debugging commands before realizing they need to be acknowledged almost immediately before performing other operations. Along the way, I became more comfortable working with async/await, Axios, and Slack Bolt. Next, I want to improve message formatting, add logging, write tests, and deploy the bot so it can run 24/7."}]...
|
Title: Dave by @Nicormu | Stardance
Devlogs:
Devl Title: Dave by @Nicormu | Stardance
Devlogs:
Devlog #1 - First Working Version of My Slack Bot I finally got the first version of my Slack bot working. This week I implemented four slash commands: a help menu, a latency check, a random cat fact command, and a random joke command. I also integrated external APIs and added basic error handling to prevent failures when an API is unavailable. The biggest challenge was understanding Slack’s command flow. I spent quite a while debugging commands before realizing they need to be acknowledged almost immediately before performing other operations. Along the way, I became more comfortable working with async/await, Axios, and Slack Bolt. Next, I want to improve message formatting, add logging, write tests, and deploy the bot so it can run 24/7.
Devlog #2 - Meet Dave and the Deployment Struggle I finally gave the bot a name, a fresh look, and a sassy personality. This week I implemented Dave’s new pixel-art avatar, a /dsb-study timer, a shower thoughts command, and hidden Easter eggs that roast users in the chat. The biggest challenge was deploying the bot 24/7. I struggled with cloud hosting because every time the server restarts, all the active study timers get completely wiped out. Along the way, I became more comfortable using regex listeners and writing dynamic responses. Next, I want to fix the deployment, connect a database to save timers, and smooth out API errors.
Devlog #3 This week I finished migrating the bot from its old DSB branding to Dave. All commands and references were updated to use the new name, making the project feel much more consistent. I also set up Dave to run as a persistent service on Nest, which means it now stays online 24/7 instead of stopping when my SSH session ends. This makes the bot much more reliable and ready for regular use.
Devlog #4 I expanded Dave with several new commands, including coin flips, random numbers, quotes, roasts, uptime monitoring, and usage statistics. These additions make the bot more interactive while keeping its sarcastic personality. I also added command tracking and improved error handling, making it easier to monitor the bot and diagnose issues when something goes wrong. With these improvements, Dave feels more complete and has a stronger foundation for future features.
What’s new this version: /dave-mood — Dave describes his emotional state (spoiler: it’s not good) /dave-advice — Terrible life advice for real-life problems /dave-compliment — Because some days you need to hear nice things /dave-fortune — Fortune cookie wisdom for developers /dave-debater — Feed Dave an opinion and watch him tear it apart /dave-decide — Let Dave make your decisions when you can’t /dave-existential — Deep thoughts from a very shallow bot
Ships:
I made Dave, a Slack bot with a bunch of fun slash commands that can tell jokes, give questionable life advice, play small games, and generally make a workspace a little less boring. The hardest part wasn’t coding the commands—it was getting the bot deployed 24/7 on a Nest server. I got stuck on an SSH passphrase issue that I don’t even remember setting, and I spent quite a while troubleshooting it. The deployment guide was also a bit confusing for me at some points, so getting everything running reliably took more effort than expected. I’m proud that I managed to get the whole thing working end-to-end: Slack integration, command handling, and deployment. It was also fun giving the bot its own personality instead of making it feel like a generic utility. To test it, add the bot to a Slack workspace and try some of the /dave-* commands. Most of them are designed to be playful, so don’t expect serious answers from Dave. 😄
🚀 Dave — Part 2 I went back to Dave and actually gave him feelings. The original version was just a collection of random responses living in Slack. This update makes him feel like someone with opinions. Pre-written arrays of snark I wrote at 2 AM: /dave-debater argues against anything you say, /dave-existential questions his own purpose (he doesn’t have one), and /dave-compliment is the only wholesome thing in this entire project. Spent more time fighting Nest’s SSH passphrase out of nowhere than writing code. journalctl –user -u dave.service became my nemesis about three times that day. Toggling restart commands blindly until something stuck. But now it runs, and there’s a bot in our workspace that roasts people for no reason. That’s enough. Try /dave-debater I love coding or /dave-existential. 😄...
|
1793274584.3601396
|
1793360984.3601396
|
|
7633
|
My awesome macropad! by @John_207 | Stardance
|
John_207
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @John_207 | Stardan Title: My awesome macropad! by @John_207 | Stardance...
|
1793372001.9165316
|
1793976801.9165316
|
|
7634
|
undivisible.dev by @undivisible | Stardance
|
undivisible
|
0
|
8.52
|
0
|
[]
|
[{"post_id": 12342, "ts": "202 [{"post_id": 12342, "ts": "2026-06-20T04:03:20Z", "hours": 6.1964, "text": "added a route to my page for llms to properly be able to fetch the content without bloat. https://undivisible.dev/llms-full.txt"}, {"post_id": 2505, "ts": "2026-06-05T01:08:17Z", "hours": 2.3219, "text": "thoughts on my website?"}]...
|
Title: undivisible.dev by @undivisible | Stardance Title: undivisible.dev by @undivisible | Stardance
Devlogs:
thoughts on my website?
added a route to my page for llms to properly be able to fetch the content without bloat. https://undivisible.dev/llms-full.txt...
|
1792810100.0265539
|
1793414900.0265539
|
|
7635
|
My first slack bot! by @awoleeson | Stardance
|
awoleeson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @awoleeson | Stardan Title: My first slack bot! by @awoleeson | Stardance...
|
1793145228.9291472
|
1793750028.9291472
|
|
7636
|
FallingSandz by @nico_scholl | Stardance
|
nico_scholl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: FallingSandz by @nico_scholl | Stardance
|
1793181259.4782336
|
1793786059.4782336
|
|
7637
|
rs_peekaboo by @undivisible | Stardance
|
undivisible
|
0
|
1.06
|
0
|
[]
|
[{"post_id": 2513, "ts": "2026 [{"post_id": 2513, "ts": "2026-06-05T01:25:16Z", "hours": 1.0553, "text": "pretty cool"}]...
|
Title: rs_peekaboo by @undivisible | Stardance
De Title: rs_peekaboo by @undivisible | Stardance
Devlogs:
pretty cool...
|
1792705753.3110914
|
1793310553.3110914
|
|
7638
|
My awesome macropad! by @Vihaanvr | Stardance
|
Vihaanvr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Vihaanvr | Stardan Title: My awesome macropad! by @Vihaanvr | Stardance...
|
1792806794.689047
|
1793411594.689047
|
|
7639
|
svelte-streamdown by @undivisible | Stardance
|
undivisible
|
0
|
2.53
|
0
|
[]
|
[{"post_id": 13502, "ts": "202 [{"post_id": 13502, "ts": "2026-06-22T03:00:54Z", "hours": 0.9381, "text": "it supports mermaid charts now!"}, {"post_id": 13463, "ts": "2026-06-22T01:28:26Z", "hours": 1.5961, "text": "i made a live site demoing my version of streamdown for svelte https://sveltestreamdown.undivisible.dev"}]...
|
Title: svelte-streamdown by @undivisible | Stardan Title: svelte-streamdown by @undivisible | Stardance
Devlogs:
i made a live site demoing my version of streamdown for svelte https://sveltestreamdown.undivisible.dev
it supports mermaid charts now!...
|
1793314470.2129984
|
1793919270.2129984
|
|
7640
|
Untitled project by @burtoneverett | Stardance
|
burtoneverett
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @burtoneverett | Starda Title: Untitled project by @burtoneverett | Stardance...
|
1792705802.4309812
|
1793310602.4309812
|
|
7641
|
My first slack bot! by @acronishalo20 | Stardance
|
acronishalo20
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @acronishalo20 | Sta Title: My first slack bot! by @acronishalo20 | Stardance...
|
1793220587.522812
|
1793825387.522812
|
|
7642
|
Flatliner by @LitSkulll | Stardance
|
LitSkulll
|
0
|
2.45
|
0
|
[]
|
[{"post_id": 6567, "ts": "2026 [{"post_id": 6567, "ts": "2026-06-11T00:59:45Z", "hours": 2.0025, "text": "Phew, finished studying about: Logic and variables Properties Boolean logic Working with data Functions. Now I’m going to start working on how I’m planning to execute the game"}, {"post_id": 4010, "ts": "2026-06-07T05:02:01Z", "hours": 0.4489, "text": "Finally starting on my first ever Godot Project ever! (wish me luck :3 )"}]...
|
Title: Flatliner by @LitSkulll | Stardance
Devlog Title: Flatliner by @LitSkulll | Stardance
Devlogs:
Finally starting on my first ever Godot Project ever! (wish me luck :3 )
Phew, finished studying about: Logic and variables Properties Boolean logic Working with data Functions. Now I’m going to start working on how I’m planning to execute the game...
|
1793357563.809332
|
1793962363.809332
|
|
7643
|
Untitled by @Justin-F | Stardance
|
Justin-F
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Justin-F | Stardance
|
1793174068.358189
|
1793778868.358189
|
|
7644
|
rs_vimium by @undivisible | Stardance
|
undivisible
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: rs_vimium by @undivisible | Stardance
|
1793181113.491574
|
1793785913.491574
|
|
7645
|
KABOOMerang by @Fluffduck | Stardance
|
Fluffduck
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: KABOOMerang by @Fluffduck | Stardance
|
1793188550.5537539
|
1793793350.5537539
|
|
7646
|
inauguration by @undivisible | Stardance
|
undivisible
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: inauguration by @undivisible | Stardance
|
1793173990.1795099
|
1793778790.1795099
|
|
7647
|
Digi Clock by @MH | Stardance
|
MH
|
0
|
0.76
|
0
|
[]
|
[{"post_id": 2534, "ts": "2026 [{"post_id": 2534, "ts": "2026-06-05T02:17:01Z", "hours": 0.7642, "text": "Having trouble with time element Lol"}]...
|
Title: Digi Clock by @MH | Stardance
Devlogs:
Hav Title: Digi Clock by @MH | Stardance
Devlogs:
Having trouble with time element Lol...
|
1792777839.3698587
|
1793382639.3698587
|
|
7648
|
My awesome macropad! by @aiydanmonta | Stardance
|
aiydanmonta
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @aiydanmonta | Star Title: My awesome macropad! by @aiydanmonta | Stardance...
|
1793310471.8548498
|
1793915271.8548498
|
|
7649
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792954093.7613618
|
1793818093.7613618
|
|
7650
|
Project Eclipse by @Nicormu | Stardance
|
Nicormu
|
0
|
24.76
|
0
|
[]
|
[{"post_id": 74252, "ts": "202 [{"post_id": 74252, "ts": "2026-09-27T02:06:11Z", "hours": 1.7828, "text": "Hiiii, Please say hello to the new liquid colorrrr (it also shinesssssss), the new crafting button, the new exit button and finally, the skin for the crafting tableeeeeeeee. Hope you like ittt <3"}, {"post_id": 73390, "ts": "2026-09-25T01:45:53Z", "hours": 2.8564, "text": "Hiiiiiii everyoneeeeee, I think the crafting station is getting a great advancement and is getting really goodddddddddd. I will add a color change when the crafting is available and see what can be improved before starting with quests or the economy of the game"}, {"post_id": 72471, "ts": "2026-09-23T01:10:03Z", "hours": 2.5333, "text": "Hiiiii, I have worked a bit and started a refactor on the crafting system, I still have issues. I dont like how the system is right now, I will think new ideas"}, {"post_id": 67342, "ts": "2026-09-13T12:45:07Z", "hours": 9.1197, "text": "Hi everyoneee, I was busy and stressed out with school and many other things, but I think I will start again with the development of Project Eclipse. By now, I have only organized the project and refactored almost every system."}, {"post_id": 18779, "ts": "2026-06-29T23:54:30Z", "hours": 2.4675, "text": "Devlog #5 I have been struggling with the crafting system. I cannot even describe the problem I have right now. Almost all the time recorded is trying the system and nothing to work. After I gived up with that, I organized the project :D"}, {"post_id": 15416, "ts": "2026-06-25T01:50:42Z", "hours": 0.4908, "text": "#Devlog #4 Hi guysss! I have been very busy these days but I have tried my best. I had added the sprites of the beaker and coal and started with the crafting system allowing dragging (not working completely) from the inventory. I will try all as I can to work more and improve the project :D"}, {"post_id": 10385, "ts": "2026-06-17T02:09:42Z", "hours": 2.705, "text": "Devlog #3 Hi everyone! Over the past few days, I’ve been working on the inventory and recipe system. I ran into some issues with Unity not saving my progress, so I had to rebuild everything multiple times (about 2 or 3 times 😭). On the bright side, I’m really happy with how the Notebook and Post-It sprites turned out. Now that the inventory system is mostly in place, I think I’ll be moving on to the crafting station."}, {"post_id": 7792, "ts": "2026-06-13T00:28:26Z", "hours": 1.9114, "text": "Devlog #2 Hi guys, I have been busy with the school and had work a little this week. The things I added is an inventory system, a recollection system and a prototype of the crafting station. I had problems with the inventory system and panel to make it look as I wanted to. Will keep working"}, {"post_id": 4451, "ts": "2026-06-07T19:33:52Z", "hours": 0.8914, "text": "Devlog #1 - The Beginning Project Eclipse is officially in development. This week I created the Garage scene, implemented player movement, and started working on object interactions. The biggest challenge was getting the interaction system to work correctly, which led to several debugging sessions before objects could be detected properly. Next, I’ll focus on finishing interactions and creating the first machine prototype"}]...
|
Title: Project Eclipse by @Nicormu | Stardance
De Title: Project Eclipse by @Nicormu | Stardance
Devlogs:
Devlog #1 - The Beginning Project Eclipse is officially in development. This week I created the Garage scene, implemented player movement, and started working on object interactions. The biggest challenge was getting the interaction system to work correctly, which led to several debugging sessions before objects could be detected properly. Next, I’ll focus on finishing interactions and creating the first machine prototype
Devlog #2 Hi guys, I have been busy with the school and had work a little this week. The things I added is an inventory system, a recollection system and a prototype of the crafting station. I had problems with the inventory system and panel to make it look as I wanted to. Will keep working
Devlog #3 Hi everyone! Over the past few days, I’ve been working on the inventory and recipe system. I ran into some issues with Unity not saving my progress, so I had to rebuild everything multiple times (about 2 or 3 times 😭). On the bright side, I’m really happy with how the Notebook and Post-It sprites turned out. Now that the inventory system is mostly in place, I think I’ll be moving on to the crafting station.
#Devlog #4 Hi guysss! I have been very busy these days but I have tried my best. I had added the sprites of the beaker and coal and started with the crafting system allowing dragging (not working completely) from the inventory. I will try all as I can to work more and improve the project :D
Devlog #5 I have been struggling with the crafting system. I cannot even describe the problem I have right now. Almost all the time recorded is trying the system and nothing to work. After I gived up with that, I organized the project :D
Hi everyoneee, I was busy and stressed out with school and many other things, but I think I will start again with the development of Project Eclipse. By now, I have only organized the project and refactored almost every system.
Hiiiii, I have worked a bit and started a refactor on the crafting system, I still have issues. I dont like how the system is right now, I will think new ideas
Hiiiiiii everyoneeeeee, I think the crafting station is getting a great advancement and is getting really goodddddddddd. I will add a color change when the crafting is available and see what can be improved before starting with quests or the economy of the game
Hiiii, Please say hello to the new liquid colorrrr (it also shinesssssss), the new crafting button, the new exit button and finally, the skin for the crafting tableeeeeeeee. Hope you like ittt <3...
|
1793270935.6192386
|
1793875735.6192386
|