|
109
|
c by @variidian | Stardance
|
variidian
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: c by @variidian | Stardance
|
1792669745.335281
|
1793274545.335281
|
|
110
|
Stardance companion app & API by @adamd | Star Stardance companion app & API by @adamd | Stardance...
|
adamd
|
0
|
23.84
|
0
|
[]
|
[{"post_id": 12460, "ts": "202 [{"post_id": 12460, "ts": "2026-06-20T10:47:34Z", "hours": 1.4392, "text": "Added achievements and leaderboard to the api"}, {"post_id": 8807, "ts": "2026-06-14T17:11:29Z", "hours": 4.2175, "text": "Hola! Today learned how to make http/api requests through flutter! It’s suspiciously easy…"}, {"post_id": 2913, "ts": "2026-06-05T20:21:21Z", "hours": 1.8619, "text": "Mornin Today I started coding the app. Nothing much yet. I found a tutorial on youtube im going to learn the basics from and made this themes file. The colors and fonts are taken from the site (Inspect element -> css -> variables, i couldnt add a screenshot after posting :()"}, {"post_id": 2383, "ts": "2026-06-04T20:44:59Z", "hours": 2.2306, "text": "Woah, quick update! The API is almost finished!! I added endpoints for missions (list, info, and projects attached) and guides, some generated tests and the pr is ready… I think! The list in the doc is so large I would have to zoom out even further to show you the full (sidebar on the left)."}, {"post_id": 2261, "ts": "2026-06-04T17:35:46Z", "hours": 3.7636, "text": "Helllo there! I am still working on the api and added a few things: followed?, liked? for projects, users and posts endpoints to follow, like and repost (quotes maybe coming soon or maybe not because i cant find the code for it?? loll) shop items, item, orders and order a guard, so guest accounts (without hca connected) cant generate a key (bacause it would bypass the website rules) and i dont remember exactly what else since the last devlog… I have set up a dev end for you to test the api on and it will (hopefully) update with every commit I push. Its available on https://6767.67.pl.eu.org . Test it using /dev_login/[id from 2 to 50] (it can be a little slow, but please dont blow up my server) (also, rate domain). Also the pr # is 224!!!!!!!"}, {"post_id": 1661, "ts": "2026-06-03T19:57:19Z", "hours": 4.1589, "text": "Hellllllo! Today I was rethinking the structure and while at it, I was getting more and more ideas on what to add to the API. I am planning search with filters, shop (i mean it kind of already is there), actions like like/follow/repost, comments, and many more and thought…. it is quite a big api if i want to all of that. and with the current structure (i mean /me/projects separate from /user/:id/projects and stuff) it would probably get even more messy in the future. So i decided to switch to a standard REST api structure!!! More on that later, and while you wait, feel free to watch a timelapse of me designing the draft of the app’s home page (it will be completely different probably anyway)! See ya!"}, {"post_id": 253, "ts": "2026-06-01T13:06:01Z", "hours": 3.0819, "text": "Helllllo again yall :hyper-blahaj-spinning:! (im patiently waiting for that feature btw) Since the last devlog, I worked a bit on two more endpoints in the /me resource. Now you can also get and edit user profile info from the api! I also copied the docs_controller.rb from flavortown and wrote some basic info about how the api functions in the openapi docs page and I found this cool space-y theme! Now im going to continue working on more endpoints and hopefully get /user(s) or /project(s) working! I hope I will not have to rewrite everything because of some change in the repo because the commits are coming very very fast and im not even keeping up with rebasing them into my branch… Also, I saw that @zrl followed the project, and Im curious if its the real Zach or if someone stole his username, so if The real Zach Latta please stand up , i mean please write a comment or something idk :)) see ya in the next devlog"}, {"post_id": 55, "ts": "2026-05-31T15:03:59Z", "hours": 3.0892, "text": "I started working on the api. Everything is a lil broken now, so is my api field in settings :)) (also dont try to steal the kay cuz its from localhost)"}]...
|
Title: Stardance companion app & API by @adamd Title: Stardance companion app & API by @adamd | Stardance
Devlogs:
I started working on the api. Everything is a lil broken now, so is my api field in settings :)) (also dont try to steal the kay cuz its from localhost)
Helllllo again yall :hyper-blahaj-spinning:! (im patiently waiting for that feature btw) Since the last devlog, I worked a bit on two more endpoints in the /me resource. Now you can also get and edit user profile info from the api! I also copied the docs_controller.rb from flavortown and wrote some basic info about how the api functions in the openapi docs page and I found this cool space-y theme! Now im going to continue working on more endpoints and hopefully get /user(s) or /project(s) working! I hope I will not have to rewrite everything because of some change in the repo because the commits are coming very very fast and im not even keeping up with rebasing them into my branch… Also, I saw that @zrl followed the project, and Im curious if its the real Zach or if someone stole his username, so if The real Zach Latta please stand up , i mean please write a comment or something idk :)) see ya in the next devlog
Hellllllo! Today I was rethinking the structure and while at it, I was getting more and more ideas on what to add to the API. I am planning search with filters, shop (i mean it kind of already is there), actions like like/follow/repost, comments, and many more and thought…. it is quite a big api if i want to all of that. and with the current structure (i mean /me/projects separate from /user/:id/projects and stuff) it would probably get even more messy in the future. So i decided to switch to a standard REST api structure!!! More on that later, and while you wait, feel free to watch a timelapse of me designing the draft of the app’s home page (it will be completely different probably anyway)! See ya!
Helllo there! I am still working on the api and added a few things: followed?, liked? for projects, users and posts endpoints to follow, like and repost (quotes maybe coming soon or maybe not because i cant find the code for it?? loll) shop items, item, orders and order a guard, so guest accounts (without hca connected) cant generate a key (bacause it would bypass the website rules) and i dont remember exactly what else since the last devlog… I have set up a dev end for you to test the api on and it will (hopefully) update with every commit I push. Its available on https://6767.67.pl.eu.org . Test it using /dev_login/[id from 2 to 50] (it can be a little slow, but please dont blow up my server) (also, rate domain). Also the pr # is 224!!!!!!!
Woah, quick update! The API is almost finished!! I added endpoints for missions (list, info, and projects attached) and guides, some generated tests and the pr is ready… I think! The list in the doc is so large I would have to zoom out even further to show you the full (sidebar on the left).
Mornin Today I started coding the app. Nothing much yet. I found a tutorial on youtube im going to learn the basics from and made this themes file. The colors and fonts are taken from the site (Inspect element -> css -> variables, i couldnt add a screenshot after posting :()
Hola! Today learned how to make http/api requests through flutter! It’s suspiciously easy…
Added achievements and leaderboard to the api...
|
1792572739.239072
|
1793177539.239072
|
|
111
|
Lunar V2 by @codedbymohit | Stardance
|
codedbymohit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Lunar V2 by @codedbymohit | Stardance
|
1791826441.0525703
|
1792690441.0525703
|
|
112
|
VERT.sh by @maya | Stardance
|
maya
|
0
|
7.16
|
0
|
[]
|
[{"post_id": 5034, "ts": "2026 [{"post_id": 5034, "ts": "2026-06-08T18:10:19Z", "hours": 1.3344, "text": "obscure ahh formats shorter devlog for now. i finally fixed the 4 formats that were not working from the previous devlog: .amv , .mpeg , .mpg , and .vob. .mpeg , .mpg , and .vob were very easy and simply needed me to ensure that the audio bitrate was always to the power of 2 (e.g. 128kbps, 256kbps, etc). .amv however.. was a bit more interesting. audio bitrate had to be 32kbps, sample rate 22050Hz, and extra arguments were needed. i needed to add the -block_size argument and then calculate the right size by dividing the sample rate (22050) with the FPS. this should be easy - audio to video conversions (using the album art / solid colour as the bg) always use 1 FPS to convert as quick as possible, but I actually had to force 3 FPS because AMV block sizes can only be between 32 and 8192. as such, the lowest FPS I could go was 3 since 22050 / 3 = 7350."}, {"post_id": 3773, "ts": "2026-06-06T20:28:44Z", "hours": 2.5539, "text": "i want to crash out well.. that was the most annoying 2 hours of my life spent there a few days ago. turns out, over 9 months ago a regression was introduced to VERT that was not noticed until now - audio thumbnails wouldn’t display properly. okay, not that big of an issue. should be a simple fix.. but i spent 2 hours on ts. it was mostly because i had to test a bunch of commits to see when the issue was introduced which took SO long not only for being so long ago.. which was only made worse because: HELPPPP basically, i had caching issues relating to Vite’s development server so the commit that i thought was the issue was NOT the issue. i had to restart my little binary searching of commits to find the actual commit that fixed it, all while running bun i && bun run build && bun run preview to install the right dependencies, build VERT for production, run a preview production build, and manually test the build for the issue which added SO much time. fixing ts so after finally finding the commit that caused the issue, i saw that it was an update to the package we use for reading audio file metadata, music-metadata , when we updated it to 1.9.0 . i initially reported the regression to the developer who was in our discord after not seeing any issues on the GitHub, but when i actually took a look at the code that was reading the data.. what the hell for some reason, the way the data was being processed was super duper cursed 💔. we were basically initializing a new Uint8Array with the cover image and getting it as an ArrayBuffer , and when generating the Blob we.. generate ANOTHER Uint8array of the same data?? i don’t even know how this worked in the first place, no wonder it broke when we updated. literally we just needed to generate one Uint8array , and pass its buffer to the Blob constructor lmfao (see third image). imagine you upload a zip file to a program expecting a bunch of images inside, but you accidentally uploaded created a zip archive of the zip archive you just made which contains those images. zip containing a (zip containing many images)–unexpected contents!"}, {"post_id": 2073, "ts": "2026-06-04T12:01:07Z", "hours": 3.2711, "text": "welcome back, VERT.sh after submitting VERT.sh during Summer of Making (and skipping Flavortown), i’ve decided to submit it again for Stardance. sadly, i did most of the very interesting features before the event so there won’t be too many interesting things made during the event. to summarize: i plan for a huge update drop adding local video conversion, per-file/more conversion settings, new formats, and many many QOL/fixes. the actual stuff here for the time i spent on this devlog, i mainly focused on fixes for conversion failures i noticed during testing. i added auto-adjustments to settings to ensure that conversions are completed successfully (a warning message pops up with what was changed when necessary), removed some now-incompatible formats, and just made sure conversions all pass again. most of the failures were regressions due to the conversion settings addition, the main thing fixing it was making sure i didn’t pass the “auto” string to the bit depth setting (instead of a number) 😭 all of the audio-audio conversions pass, while all but 4 audio -> video conversions pass. the last 4 are more obscure formats and i didn’t bother to fix them yet rn. i also prevented some video formats (like .gif) from being shown since they don’t like audio tracks lol"}]...
|
Title: VERT.sh by @maya | Stardance
Devlogs:
welc Title: VERT.sh by @maya | Stardance
Devlogs:
welcome back, VERT.sh after submitting VERT.sh during Summer of Making (and skipping Flavortown), i’ve decided to submit it again for Stardance. sadly, i did most of the very interesting features before the event so there won’t be too many interesting things made during the event. to summarize: i plan for a huge update drop adding local video conversion, per-file/more conversion settings, new formats, and many many QOL/fixes. the actual stuff here for the time i spent on this devlog, i mainly focused on fixes for conversion failures i noticed during testing. i added auto-adjustments to settings to ensure that conversions are completed successfully (a warning message pops up with what was changed when necessary), removed some now-incompatible formats, and just made sure conversions all pass again. most of the failures were regressions due to the conversion settings addition, the main thing fixing it was making sure i didn’t pass the “auto” string to the bit depth setting (instead of a number) 😭 all of the audio-audio conversions pass, while all but 4 audio -> video conversions pass. the last 4 are more obscure formats and i didn’t bother to fix them yet rn. i also prevented some video formats (like .gif) from being shown since they don’t like audio tracks lol
i want to crash out well.. that was the most annoying 2 hours of my life spent there a few days ago. turns out, over 9 months ago a regression was introduced to VERT that was not noticed until now - audio thumbnails wouldn’t display properly. okay, not that big of an issue. should be a simple fix.. but i spent 2 hours on ts. it was mostly because i had to test a bunch of commits to see when the issue was introduced which took SO long not only for being so long ago.. which was only made worse because: HELPPPP basically, i had caching issues relating to Vite’s development server so the commit that i thought was the issue was NOT the issue. i had to restart my little binary searching of commits to find the actual commit that fixed it, all while running bun i && bun run build && bun run preview to install the right dependencies, build VERT for production, run a preview production build, and manually test the build for the issue which added SO much time. fixing ts so after finally finding the commit that caused the issue, i saw that it was an update to the package we use for reading audio file metadata, music-metadata , when we updated it to 1.9.0 . i initially reported the regression to the developer who was in our discord after not seeing any issues on the GitHub, but when i actually took a look at the code that was reading the data.. what the hell for some reason, the way the data was being processed was super duper cursed 💔. we were basically initializing a new Uint8Array with the cover image and getting it as an ArrayBuffer , and when generating the Blob we.. generate ANOTHER Uint8array of the same data?? i don’t even know how this worked in the first place, no wonder it broke when we updated. literally we just needed to generate one Uint8array , and pass its buffer to the Blob constructor lmfao (see third image). imagine you upload a zip file to a program expecting a bunch of images inside, but you accidentally uploaded created a zip archive of the zip archive you just made which contains those images. zip containing a (zip containing many images)–unexpected contents!
obscure ahh formats shorter devlog for now. i finally fixed the 4 formats that were not working from the previous devlog: .amv , .mpeg , .mpg , and .vob. .mpeg , .mpg , and .vob were very easy and simply needed me to ensure that the audio bitrate was always to the power of 2 (e.g. 128kbps, 256kbps, etc). .amv however.. was a bit more interesting. audio bitrate had to be 32kbps, sample rate 22050Hz, and extra arguments were needed. i needed to add the -block_size argument and then calculate the right size by dividing the sample rate (22050) with the FPS. this should be easy - audio to video conversions (using the album art / solid colour as the bg) always use 1 FPS to convert as quick as possible, but I actually had to force 3 FPS because AMV block sizes can only be between 32 and 8192. as such, the lowest FPS I could go was 3 since 22050 / 3 = 7350....
|
1792684107.6900206
|
1793288907.6900206
|
|
113
|
HK WanZaap Station by @isaaclau888 | Stardance
|
isaaclau888
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 13577, "ts": "202 [{"post_id": 13577, "ts": "2026-06-22T07:23:53Z", "hours": 0.6783, "text": "I have finished coding for the Chinese Paper 2 page."}]...
|
Title: HK WanZaap Station by @isaaclau888 | Starda Title: HK WanZaap Station by @isaaclau888 | Stardance
Devlogs:
I have finished coding for the Chinese Paper 2 page....
|
1792526038.76702
|
1793130838.76702
|
|
114
|
114 by @Rupnil | Stardance
|
Rupnil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 114 by @Rupnil | Stardance
|
1792511527.5951633
|
1793116327.5951633
|
|
115
|
115 by @Rupnil | Stardance
|
Rupnil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 115 by @Rupnil | Stardance
|
1792723865.0535407
|
1793328665.0535407
|
|
117
|
Automatic garden watering system by @Bennet | Star Automatic garden watering system by @Bennet | Stardance...
|
Bennet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Automatic garden watering system by @Bennet Title: Automatic garden watering system by @Bennet | Stardance...
|
1792777906.2990026
|
1793382706.2990026
|
|
118
|
118 by @Rupnil | Stardance
|
Rupnil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 118 by @Rupnil | Stardance
|
1792616092.8196585
|
1793220892.8196585
|
|
119
|
testy mc test face by @RR | Stardance
|
RR
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: testy mc test face by @RR | Stardance
|
1792637493.027676
|
1793242293.027676
|
|
120
|
120 by @Rupnil | Stardance
|
Rupnil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 120 by @Rupnil | Stardance
|
1792741936.0865355
|
1793346736.0865355
|
|
122
|
Untitled by @maya | Stardance
|
maya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @maya | Stardance
|
1792713281.111912
|
1793318081.111912
|
|
123
|
Pime by @kanavv | Stardance
|
kanavv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pime by @kanavv | Stardance
|
1792806736.877385
|
1793411536.877385
|
|
124
|
Nasa theme MicroPad by @sauravrajki67 | Stardance
|
sauravrajki67
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nasa theme MicroPad by @sauravrajki67 | Sta Title: Nasa theme MicroPad by @sauravrajki67 | Stardance...
|
1791827210.7364829
|
1792691210.7364829
|
|
125
|
Untitled by @RR | Stardance
|
RR
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @RR | Stardance
|
1792745409.3478167
|
1793350209.3478167
|
|
126
|
Exterstellar by @Sabio | Stardance
|
Sabio
|
0
|
22.3
|
0
|
[]
|
[{"post_id": 7719, "ts": "2026 [{"post_id": 7719, "ts": "2026-06-12T21:38:27Z", "hours": 4.2303, "text": "Exterstellar indev-8 The Onboarding update (so peak) New Feature(s) Onboarding Bug Fix(es) Fix the Firefox configuration import button unfocusing the popup and causing it to not register by creating a separate page dedicated to importing configuration. Changelog fix(importer): fix firefox config import by making a new page for importing configs ( 7ee1b2a ) feat: onboarding ( 3faa741 )"}, {"post_id": 5650, "ts": "2026-06-09T15:03:49Z", "hours": 3.9678, "text": "Exterstellar indev-7 The TypeScript Migration update. Refactors All plugins and core JavaScript files are now using TypeScript. New Features Import / Export configuration system. Changelog feat: import/export system! ( be9ea28 ) refactor: Change everything into typescript + update readme + update workflows ( f5c5980 )"}, {"post_id": 3520, "ts": "2026-06-06T14:29:58Z", "hours": 0.7978, "text": "Exterstellar indev-6 Smallest update (yet)! New Features Add Plugin Manager Settings, where you can customize font size and the width of the manager! New Bug Fix(es) Fix comment text in the textarea not rendering due to conflicts with the native comment markdown system. Removed Plugin(s) Comment Markdown (now natively available!) Changelog fix(comments): remove comment md as its natively implemented ( f9389b2 ) feat: add plugin manager settings ( e8c4b99 )"}, {"post_id": 2977, "ts": "2026-06-05T22:01:42Z", "hours": 5.7128, "text": "Exterstellar indev-5 ΩΜΞGΛ SiGMΛ+++++++++++ DΞLUXΞ update for Exterstellar! New Plugin(s) Shop Goal Enhanced Completely revamps the shop goal system! (This took so long…) New Dev Stuff Plugin Exports API something something something plugins can now export functions for other plugins to use (PΞΛK) Changelog feat: add plugin exports API + comment markdown now uses devlog formatter and md preview ( 78e369c ) added Sidebar Reorder ( 0d6c2d2 ) added Sidebar Hotkeys ( ee3926e ) added Devlog Formatter ( 85b8d4d ) added Comment Markdown ( acef3ac ) added Oneko ( aa59ccd ) Shop Goals Enhanced plugin! ( e493f54 ) Merge branch ‘main’ of https://github.com/Team-Exterstellar/Exterstellar ( 82688a4 )"}, {"post_id": 1610, "ts": "2026-06-03T19:02:49Z", "hours": 1.2808, "text": "Exterstellar indev-4 Introducing that one update where its larger than usual! (only slightly larger :3) New Plugin(s) Comment Markdown Adds markdown to comments (exclusive to Exterstellar users) . You can also select a config that allows you to help advertise and support Exterstellar! Updated Plugin(s) Markdown Preview Added Line Break. Devlog Formatter Bar Added Line Break. Changelog devlog formatter: “remove image formatting”, devlog changelog: “default to using commit-rang selector” ( 156c09e ) initialize NPM + comment markdown plugin ( b3b14cb ) comment markdown: “advertise config” ( 79f5923 ) Add line break to markdown preview & devlog formatter bar ( 6fb254f ) md preview: “fix break line offsetting textarea” ( 47e0c67 )"}, {"post_id": 1076, "ts": "2026-06-02T21:50:11Z", "hours": 2.5008, "text": "Exterstellar indev-3 Introducing your 600+ LoC plugin (help my sanity) for this week! New Plugin(s) Add changelog plugin (Adds your GitHub OR GitLab commits to your devlog!) Changelog feat: add oneko plugin ( a5f7542 ) Merge pull request #1 from GizzyUwU/main ( aa0bb71 ) fix(oneko): work over page change ( c6e7452 ) Merge pull request #2 from GizzyUwU/main ( fd83d40 ) Devlog changelog plugin! ( 02bcf5c )"}, {"post_id": 445, "ts": "2026-06-01T21:22:07Z", "hours": 1.1653, "text": "Exterstellar indev-2h introducing your 1 hour bug fix for the day (tm) p.s. next time i discover a bug i’m going to eat myself smh Bug Fix(es) The Live Markdown Preview plugin now supports the devlog composer menu overflowing! (a.k.a. scrolling [this took way too long]) yes that’s it because the Stardance website hates me smh"}, {"post_id": 329, "ts": "2026-06-01T17:03:31Z", "hours": 1.2644, "text": "Exterstellar indev-2 Introducing a new feature and significant improvement to the plugin system! New Feature(s) Live Markdown Rendering Plugin (not a new panel, or tab, just straight up displayed!) Plugin Live Changes (no refresh needed!)"}, {"post_id": 89, "ts": "2026-05-31T17:44:35Z", "hours": 1.3811, "text": "Exterstellar indev-1 Introducing your underrated browser extension for Stardance : Exterstellar by Sabio (that’s me!) & @Flux3tor (pretty much a major contributor-) . Features Toggleable Plugins (which are basically features the extension adds!) A lot (and I mean a LOT… ) of configurations available for all plugins (plugin configs!) Can be used to support MANY mini-extensions with our easy-to-use plugin development tool and documentation¹. Plugins Better Sidebar Custom Font Custom Scrollbar Devlog Formatter Sidebar Hotkeys Sidebar Reordering Themes ( @Gizzy certified btw :3) +more already in the works! (please comment plugin ideas if you have suggestions!) Join #exterstellar now! ¹ The documentation is in the works."}]...
|
Title: Exterstellar by @Sabio | Stardance
Devlogs Title: Exterstellar by @Sabio | Stardance
Devlogs:
Exterstellar indev-1 Introducing your underrated browser extension for Stardance : Exterstellar by Sabio (that’s me!) & @Flux3tor (pretty much a major contributor-) . Features Toggleable Plugins (which are basically features the extension adds!) A lot (and I mean a LOT… ) of configurations available for all plugins (plugin configs!) Can be used to support MANY mini-extensions with our easy-to-use plugin development tool and documentation¹. Plugins Better Sidebar Custom Font Custom Scrollbar Devlog Formatter Sidebar Hotkeys Sidebar Reordering Themes ( @Gizzy certified btw :3) +more already in the works! (please comment plugin ideas if you have suggestions!) Join #exterstellar now! ¹ The documentation is in the works.
Exterstellar indev-2 Introducing a new feature and significant improvement to the plugin system! New Feature(s) Live Markdown Rendering Plugin (not a new panel, or tab, just straight up displayed!) Plugin Live Changes (no refresh needed!)
Exterstellar indev-2h introducing your 1 hour bug fix for the day (tm) p.s. next time i discover a bug i’m going to eat myself smh Bug Fix(es) The Live Markdown Preview plugin now supports the devlog composer menu overflowing! (a.k.a. scrolling [this took way too long]) yes that’s it because the Stardance website hates me smh
Exterstellar indev-3 Introducing your 600+ LoC plugin (help my sanity) for this week! New Plugin(s) Add changelog plugin (Adds your GitHub OR GitLab commits to your devlog!) Changelog feat: add oneko plugin ( a5f7542 ) Merge pull request #1 from GizzyUwU/main ( aa0bb71 ) fix(oneko): work over page change ( c6e7452 ) Merge pull request #2 from GizzyUwU/main ( fd83d40 ) Devlog changelog plugin! ( 02bcf5c )
Exterstellar indev-4 Introducing that one update where its larger than usual! (only slightly larger :3) New Plugin(s) Comment Markdown Adds markdown to comments (exclusive to Exterstellar users) . You can also select a config that allows you to help advertise and support Exterstellar! Updated Plugin(s) Markdown Preview Added Line Break. Devlog Formatter Bar Added Line Break. Changelog devlog formatter: “remove image formatting”, devlog changelog: “default to using commit-rang selector” ( 156c09e ) initialize NPM + comment markdown plugin ( b3b14cb ) comment markdown: “advertise config” ( 79f5923 ) Add line break to markdown preview & devlog formatter bar ( 6fb254f ) md preview: “fix break line offsetting textarea” ( 47e0c67 )
Exterstellar indev-5 ΩΜΞGΛ SiGMΛ+++++++++++ DΞLUXΞ update for Exterstellar! New Plugin(s) Shop Goal Enhanced Completely revamps the shop goal system! (This took so long…) New Dev Stuff Plugin Exports API something something something plugins can now export functions for other plugins to use (PΞΛK) Changelog feat: add plugin exports API + comment markdown now uses devlog formatter and md preview ( 78e369c ) added Sidebar Reorder ( 0d6c2d2 ) added Sidebar Hotkeys ( ee3926e ) added Devlog Formatter ( 85b8d4d ) added Comment Markdown ( acef3ac ) added Oneko ( aa59ccd ) Shop Goals Enhanced plugin! ( e493f54 ) Merge branch ‘main’ of https://github.com/Team-Exterstellar/Exterstellar ( 82688a4 )
Exterstellar indev-6 Smallest update (yet)! New Features Add Plugin Manager Settings, where you can customize font size and the width of the manager! New Bug Fix(es) Fix comment text in the textarea not rendering due to conflicts with the native comment markdown system. Removed Plugin(s) Comment Markdown (now natively available!) Changelog fix(comments): remove comment md as its natively implemented ( f9389b2 ) feat: add plugin manager settings ( e8c4b99 )
Exterstellar indev-7 The TypeScript Migration update. Refactors All plugins and core JavaScript files are now using TypeScript. New Features Import / Export configuration system. Changelog feat: import/export system! ( be9ea28 ) refactor: Change everything into typescript + update readme + update workflows ( f5c5980 )
Exterstellar indev-8 The Onboarding update (so peak) New Feature(s) Onboarding Bug Fix(es) Fix the Firefox configuration import button unfocusing the popup and causing it to not register by creating a separate page dedicated to importing configuration. Changelog fix(importer): fix firefox config import by making a new page for importing configs ( 7ee1b2a ) feat: onboarding ( 3faa741 )...
|
1792745510.9977374
|
1793350310.9977374
|
|
127
|
Lanis by @Bennet | Stardance
|
Bennet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Lanis by @Bennet | Stardance
|
1792795684.1046987
|
1793400484.1046987
|
|
128
|
My first slack bot! by @sammy | Stardance
|
sammy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sammy | Stardance
|
1792568857.348386
|
1793173657.348386
|
|
129
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792893000.0381749
|
1793757000.0381749
|
|
130
|
Frictionless by @shiekhuu | Stardance
|
shiekhuu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @shiekhuu | Stardance
|
1792633645.148014
|
1793238445.148014
|
|
131
|
WasFlash - A Flashplayer Implimentation in C++/Web WasFlash - A Flashplayer Implimentation in C++/Web by @Silverhoft | Stardance...
|
Silverhoft
|
0
|
61.13
|
0
|
[]
|
[{"post_id": 80252, "ts": "202 [{"post_id": 80252, "ts": "2026-10-16T22:41:11Z", "hours": 9.8989, "text": "WasFlash Devlog # 11.5 Alpha 3.1- Pre Release 4.5 Progress Update: ~ Sprite Parsing and preprocessing done for rendering functionality ~ Currently working on the implementation and actual rendering now… Notes: This serves as a midway point in a more extensive development stage - A real devlog will be posted soon, at a better stopping point."}, {"post_id": 76182, "ts": "2026-10-02T16:45:00Z", "hours": 6.0339, "text": "WasFlash Devlog # 11 Alpha 3.1- Pre Release 4 What I worked on today: ~ Started Work on sprite implementation. Notes: Hello everyone, it’s been quite a while, sorry about that. I am currently working on implementing sprites; it’s a lot of work and more difficult than anything else I’ve done for this project. I’m not sure if they will be done by the end of this, so I plan to ship this now, and possibly release another ship if I can finish it. I am very busy with my school’s performance of Les Mis; that is why this is a bit sparse. I appreciate your patience and hopefully we will have fully working sprites by the end of october. Agenda: - Work on sprite implimentation Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 36721, "ts": "2026-07-28T23:21:34Z", "hours": 1.88, "text": "WasFlash Devlog # 11 Alpha 3.1- Pre Release 3 What I worked on today: ~ DefineBitsLossless2 32Bit + 8Bit ARGB Support ~ Implimented Actual Alpha Pixel Rasterization Notes: Hello friends! I finally finished implementing Bitmaps, and I am very excited to port to WASM, and release the bitmaps release. I am planning on working on fonts and text next, and doing whatever else sprites will require. After which I will work on sprite animation, and a far more polished UI, as well as an official linux release. I have decided to name the first official release(And ship), Alpha 4.0 Anim. I feel that this represents the fact that adding sprites will make this a fully funtional flash animation player. After this, I plan to finish tag support, and try to work on some simple ActionScript, to get buttons and other simple functions working. And the end goal would involve a fully functional ActionScript Engine, and a fully implimented Flash Player replacement. Anyways, I hope you all have a good day, see you all next time! Agenda: - Impliment DefineBitsLossless2 Whats Next: - Create actual autobuild script for both WASM and Native Linux - Font Support + Other small sprite prerequisites - Sprite Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More Note: Image with brighter colors is 8Bit, and the one with the more nuanced colors is 32Bit"}, {"post_id": 34999, "ts": "2026-07-26T04:38:40Z", "hours": 9.8161, "text": "WasFlash Devlog # 10 Alpha 3.1- Pre Release 2 What I worked on today: - Implimented the following: ~ DefineBits2 + Corresponding Bug testing Files ~ DefineBits 3+4 + Corresponding Bug testing Files ~ DefineBitsLossless + Corresponding Bug testing Files, and custom image assemblers for speed. ~ Changed Zlib to Wuffs for much faster decomp times. Notes: Hello Friends, it’s been a while, and I really try to avoid 10 hour devlogs, but I really wanted a good real world testable result for bitmaps before I made one. The main reason being that next on the list is sprites, which will complete the animation stage of this project. Leading us to Alpha 4.0. Now I wanted to take the time to name each coming stage, as each one will be long, yet monumental. I am nearly done with bitmaps, and soon enough, I will be working on the grueling task of implementing the sprites. I think so far the most difficult task was shapes, because it required a very deep understanding of the SWF shape system, but sprites might be a close second. I really appreciate you guys’ support, even though there aren’t too many of you. I love this project, and I am so happy I get to express it here. Agenda: - Impliment DefineBitsLossless2 Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - In Progress - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 11762, "ts": "2026-06-19T04:34:27Z", "hours": 6.3311, "text": "WasFlash Devlog # 9 Alpha 3.1- Pre Release 1 What I worked on today: - Implimented DefineBits - Parsing and rendering ~ Updated Dependency Script to include libJPEGTurbo ~ Created 2 test SWF files using jpexs ~ Fixed major shape disappearing issue Notes: Hello Friends! I spent quite a bit of time on this, both parsing and processing bitmaps. So far we only have one working bitmap parser of 6, and that is the most bare bones one. There are some weird errors that can occur with the JPEG headers, but it is impossible to find SWF files with DefineBits, so I made my own, one without the error, and one with it. It currently works for both, which is great, and I am excited to see where I can take this project. I am so close to being ready for Sprite support. I just need to keep pushing through these tags. Thank you to anyone who’s been keeping up with this, for others, feel free to follow if you think this is cool. See you guys next time! Agenda: - Implement the other 5 DefineBits Types - Get EMScripten libJPEGTurbo Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - In Progress - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 9165, "ts": "2026-06-15T11:00:10Z", "hours": 0.8281, "text": "WasFlash Devlog # 8 Alpha 3.0 What I accomplished today: - MAJOR UPDATE! – NEW RELEASE – MAJOR UPDATE! - Fixed Morph Shape issues - Fixed wrong MorphShape Order - Fixed the Matrix Signing Error - This has been causing the shape warping - Optimized Rendering Packets - Updated Web Implementation Notes: Hello friends, My most recent Devlog may have reflected some distress, but I finally figured it out! The weird warping of shapes was caused by a bug in a script I wrote about 5 months ago, that I thought was solid. There was a signing error, so all numbers ended up unproportionately large if they were negative, because the first bit was being counted towards the value. With a quick change of 2 lines, it completely changed the look of animations. As for the color bug with morph shapes, there is no bug at all, in fact the morph shapes typically are used as templates for sprites. So if you see any odd colored shapes, that’s why :D. Lastly, for some reason morph shapes are interpolated in reverse when using Skia, so I simply reversed the inputs, and the morph shapes are working as intended. The final thing was updating the main tag processor to send render instructions in batches, not one at a time, as to reduce overhead. This is a tough project, and I have poured my soul into it, if you think it’s cool, please feel free to follow it! Anyways, see you guys next time! Whats Next: - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 9093, "ts": "2026-06-15T06:09:44Z", "hours": 6.4083, "text": "WasFlash Devlog # 7 Alpha 3.0 - Pre Release 3 What I worked on today: - Implimented DefineMorphShape’s - Still not fully working ~ Implemented MorphFillStyle Translator ~ Implemented MorphLineStyle Translator - 1 and 2 ~ Implemented MorphGradient Translator ~ Implemented DefineMorphShape to Shape Builder * ~ Fixed parsers to work with builders Notes: Hello friends, I did a lot of work in this long extended session! I decided that it would make sense to just convert the morph variants to the normal variants, and use my current framework to just build 2 shapes, and interpolate them. There were a lot of issues, because there are some odd SWF bugs that happen sometimes, and I thought they were my own errors, so I spent like 2 hours trying to get things working, and I just ended up putting in some fall back code, and got things working, but now there are some weird color bugs, so I need to work those out, but overall it seems to be working ok. It’s been a rough week, so I hope it gets a little easier(It’s not gonna be with sprites, but it is what it is). Anyways, thank you guys for following along, for anyone else coming across this, feel free to like this comment, and follow the project if you think it’s cool. See you guys next time! Agenda: - Fix odd color issues with morph shapes - Clean up parsing output - Update the website to use new update Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 6741, "ts": "2026-06-11T09:07:58Z", "hours": 5.9478, "text": "WasFlash Devlog # 6 Alpha 3.0 - Pre Release 2 What I worked on today: - Implemented Full DefineMorphShape Parsing - Currently not fully working ~ Implemented MorphFillStyle Parsing ~ Implemented MorphLineStyle Parsing - 1 and 2 ~ Implemented MorphGradient Parsing ~ Implemented SHAPE Struct Parsing ~ Implemented DefineMorphShape Parsing ~ Implemented DefineMorphShape2 Parsing Notes: Hello friends, as you can see, this Devlog is pretty long. This took around twice as long as ordinary Shape Styles, seen in DefineShape tags. This is because each DefineMorphShape tag contains a pair of each type of data for interpolation, rather than one set. For the most part this was just pretty tedious low level Bitmath operations, and a lot of nested structures. It wasn’t too bad, because I had a good reference from the original DefineShape structures, and just general experience, but yes, it was very tedious, and likely the least fun part of this process. Hopefully my next Devlog has a better timeframe, and parsing is working! Thank you all for stopping by, as always, please feel free to leave a comment with any questions you might have, or just feedback in general, as well as following and liking this post! See you all later! Agenda: - Get Parsing to a Functional State - Create a processor for Morph Shapes - Add rendering case for Morph Shapes Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 4777, "ts": "2026-06-08T08:29:50Z", "hours": 2.455, "text": "WasFlash Devlog # 5 Alpha 3.0 - Pre Release 1 What I worked on today: - Started Development Of DefineMorphShape tags ~ Created new SHAPE base structure ~ Set up all required structures for DefineMorphShape ~ Added DefineMorphShape to tags.h Notes: Hello friends, you may have noticed a different version type, “Pre Release”. This is simply an indication that this is not an official change, and is not implemented into the project. Pre Release Devlogs should tend to reflect 1-2 big changes, with a large majority of the content nested inside, as shown above. This Devlog serves to both announce the beginning of Morph Shape Development, and represent what to expect from Pre Releases. As a quick note to the fact that Morph Shapes were not even on the To Do list, I recently discovered that Morph Shapes were just as important as Sprites, when properly rendering animations. Anyways, though this one was short, thank you for stopping by, and feel free to check out my project, follow it, and like this post if you think it’s cool! See you all next time! Agenda: - Work on parsing for Morph Shapes - Create a processor for Morph Shapes - Add rendering case for Morph Shapes Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 2111, "ts": "2026-06-04T13:16:26Z", "hours": 1.9697, "text": "WasFlash Devlog # 4 Alpha 2.2.1 What I accomplished today: - Added even more optimizations to the shape processing - Implemented DefineShape4 support - Pushed Updates to Web - Updated Skia Git Clone - To prevent the deadly stack trace issue Notes: Hello friends, this session was very exciting! I was able to get DefineShape4 Shapes to render properly, and although it was a pain it looks really good! I had to kinda rework the processor a little bit, because DefineShape4 adds a few flags, but I already added LineStyles2 support, so it implemented well. I also got rid of the redundant line/fill storage, which was a small optimization, but still mostly noticeable. To end off the session, I changed the Skia commit hash, so we won’t need to deal with outdated headers. Whats Next: - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 1022, "ts": "2026-06-02T20:18:24Z", "hours": 1.4325, "text": "WasFlash Devlog # 3 Alpha 2.1.4 What I accomplished today: - Fixed scaling of canvas on website - Added anti-aliasing to smooth out animations on both web and native builds - Pushed web compiler flags to main build - Made Cinnamon Rolls Notes: Hello friends! I spent a lot of time trying to figure this one out, many hours were spent debugging this session. Originally the website was just plugging the file into the WASM binary, and re-scaling to output to make the output match the canvas size, but this would cause blurriness and distorted quality. The good thing about this is, because we actually have to build each shape, we can just tell Skia to draw the shapes bigger, so the scaling still produces a native shape, just with different dimensions. So I had to rework the way the scaling worked. I also added back anti-aliasing, because the optimizations worked so well, that we can run anti-aliased’ output at full speed! There wasn’t too much going on this time around. but it really made a big difference! Thank you all for being here, I really appreciate it! Please feel free to leave a comment, with any questions or feedback, and like this post if you think it’s cool, and follow the project, if you think it’s cool! Have a good day everyone! PS. The cinnamon rolls were yummy! Whats Next: - Adding DefineShape4 support + Port DefineShape4 to WebAssembly - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 400, "ts": "2026-06-01T19:45:39Z", "hours": 2.1522, "text": "WasFlash Devlog # 2 Alpha 2.1.3 What I accomplished today: - Added major optimizations to WebAssembly compilation - Revamped WasFlash official color scheme - Using the Catppuccin color scheme - Fixed some bugs with buttons + Added functionality to a few buttons - Updated logo with new color scheme Notes: Hello friends! I made some big differences to the look of the website, with a new logo, completely different color palette, and the general feel of the website. My original idea for WasFlash was a kind of cyberpunk theme, I spent countless hours adding little glowing effects, and these moving gradients, but I couldn’t shake the awkward feeling of it all. A flash emulator is old software, but it is by no means is it retro. I decided it was time to finally change it up, and I am so happy I did, because the website feels much cleaner, and well implemented. While pink and blue are my favorite gradient palette, cyan and green are a close second, and worked perfectly for this. Overall the website is much nicer on the eyes, and generally better to use! Finally I updated the popup to mention Stardance instead of Flavortown. Thank you for joining me today! Please feel free to leave a comment with what you think below, and like the project if you think it’s cool! Anyways, that’s all from me today, see you guys around! Whats Next: - Adding DefineShape4 support + Port DefineShape4 to WebAssembly - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More Images"}, {"post_id": 191, "ts": "2026-06-01T07:02:35Z", "hours": 5.6261, "text": "WasFlash Devlog # 1 What I accomplished today: Debugging deadly stack trace error - Ended up being outdated headers from Skia Updating Skia headers to modern version Re-Added gradient shape fill support Added heavy optimizations for all locally built dependencies, for native Linux builds - Removes latency entirely Cleaned up loose files Notes: Hello friends, today was a little bit of a drag, given the fact that I just could not figure out what was causing this nonstop stack trace. I finally looked into Skia, and realized my headers were out of date with the actual program, so I had to update those, ultimately fixing the program entirely. I also took some time to add optimization, so much so, that there is now zero latency in both audible, and visual playback. Overall, this was a productive session, even though it took ages. Whats Next: Porting current version to WebAssembly - With similar optimizations Adding DefineShape4 support + Port DefineShape4 to WebAssembly Update Wasflash Website with new Catppuccin color palette Create actual autobuild script for both WASM and Native Linux - Some time in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More"}, {"post_id": 7, "ts": "2026-05-31T07:11:48Z", "hours": 0.3519, "text": "WasFlash has Officially Re-Started Development!"}]...
|
Title: WasFlash - A Flashplayer Implimentation in Title: WasFlash - A Flashplayer Implimentation in C++/Web by @Silverhoft | Stardance
Devlogs:
WasFlash has Officially Re-Started Development!
WasFlash Devlog # 1 What I accomplished today: Debugging deadly stack trace error - Ended up being outdated headers from Skia Updating Skia headers to modern version Re-Added gradient shape fill support Added heavy optimizations for all locally built dependencies, for native Linux builds - Removes latency entirely Cleaned up loose files Notes: Hello friends, today was a little bit of a drag, given the fact that I just could not figure out what was causing this nonstop stack trace. I finally looked into Skia, and realized my headers were out of date with the actual program, so I had to update those, ultimately fixing the program entirely. I also took some time to add optimization, so much so, that there is now zero latency in both audible, and visual playback. Overall, this was a productive session, even though it took ages. Whats Next: Porting current version to WebAssembly - With similar optimizations Adding DefineShape4 support + Port DefineShape4 to WebAssembly Update Wasflash Website with new Catppuccin color palette Create actual autobuild script for both WASM and Native Linux - Some time in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 2 Alpha 2.1.3 What I accomplished today: - Added major optimizations to WebAssembly compilation - Revamped WasFlash official color scheme - Using the Catppuccin color scheme - Fixed some bugs with buttons + Added functionality to a few buttons - Updated logo with new color scheme Notes: Hello friends! I made some big differences to the look of the website, with a new logo, completely different color palette, and the general feel of the website. My original idea for WasFlash was a kind of cyberpunk theme, I spent countless hours adding little glowing effects, and these moving gradients, but I couldn’t shake the awkward feeling of it all. A flash emulator is old software, but it is by no means is it retro. I decided it was time to finally change it up, and I am so happy I did, because the website feels much cleaner, and well implemented. While pink and blue are my favorite gradient palette, cyan and green are a close second, and worked perfectly for this. Overall the website is much nicer on the eyes, and generally better to use! Finally I updated the popup to mention Stardance instead of Flavortown. Thank you for joining me today! Please feel free to leave a comment with what you think below, and like the project if you think it’s cool! Anyways, that’s all from me today, see you guys around! Whats Next: - Adding DefineShape4 support + Port DefineShape4 to WebAssembly - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More Images
WasFlash Devlog # 3 Alpha 2.1.4 What I accomplished today: - Fixed scaling of canvas on website - Added anti-aliasing to smooth out animations on both web and native builds - Pushed web compiler flags to main build - Made Cinnamon Rolls Notes: Hello friends! I spent a lot of time trying to figure this one out, many hours were spent debugging this session. Originally the website was just plugging the file into the WASM binary, and re-scaling to output to make the output match the canvas size, but this would cause blurriness and distorted quality. The good thing about this is, because we actually have to build each shape, we can just tell Skia to draw the shapes bigger, so the scaling still produces a native shape, just with different dimensions. So I had to rework the way the scaling worked. I also added back anti-aliasing, because the optimizations worked so well, that we can run anti-aliased’ output at full speed! There wasn’t too much going on this time around. but it really made a big difference! Thank you all for being here, I really appreciate it! Please feel free to leave a comment, with any questions or feedback, and like this post if you think it’s cool, and follow the project, if you think it’s cool! Have a good day everyone! PS. The cinnamon rolls were yummy! Whats Next: - Adding DefineShape4 support + Port DefineShape4 to WebAssembly - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 4 Alpha 2.2.1 What I accomplished today: - Added even more optimizations to the shape processing - Implemented DefineShape4 support - Pushed Updates to Web - Updated Skia Git Clone - To prevent the deadly stack trace issue Notes: Hello friends, this session was very exciting! I was able to get DefineShape4 Shapes to render properly, and although it was a pain it looks really good! I had to kinda rework the processor a little bit, because DefineShape4 adds a few flags, but I already added LineStyles2 support, so it implemented well. I also got rid of the redundant line/fill storage, which was a small optimization, but still mostly noticeable. To end off the session, I changed the Skia commit hash, so we won’t need to deal with outdated headers. Whats Next: - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 5 Alpha 3.0 - Pre Release 1 What I worked on today: - Started Development Of DefineMorphShape tags ~ Created new SHAPE base structure ~ Set up all required structures for DefineMorphShape ~ Added DefineMorphShape to tags.h Notes: Hello friends, you may have noticed a different version type, “Pre Release”. This is simply an indication that this is not an official change, and is not implemented into the project. Pre Release Devlogs should tend to reflect 1-2 big changes, with a large majority of the content nested inside, as shown above. This Devlog serves to both announce the beginning of Morph Shape Development, and represent what to expect from Pre Releases. As a quick note to the fact that Morph Shapes were not even on the To Do list, I recently discovered that Morph Shapes were just as important as Sprites, when properly rendering animations. Anyways, though this one was short, thank you for stopping by, and feel free to check out my project, follow it, and like this post if you think it’s cool! See you all next time! Agenda: - Work on parsing for Morph Shapes - Create a processor for Morph Shapes - Add rendering case for Morph Shapes Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 6 Alpha 3.0 - Pre Release 2 What I worked on today: - Implemented Full DefineMorphShape Parsing - Currently not fully working ~ Implemented MorphFillStyle Parsing ~ Implemented MorphLineStyle Parsing - 1 and 2 ~ Implemented MorphGradient Parsing ~ Implemented SHAPE Struct Parsing ~ Implemented DefineMorphShape Parsing ~ Implemented DefineMorphShape2 Parsing Notes: Hello friends, as you can see, this Devlog is pretty long. This took around twice as long as ordinary Shape Styles, seen in DefineShape tags. This is because each DefineMorphShape tag contains a pair of each type of data for interpolation, rather than one set. For the most part this was just pretty tedious low level Bitmath operations, and a lot of nested structures. It wasn’t too bad, because I had a good reference from the original DefineShape structures, and just general experience, but yes, it was very tedious, and likely the least fun part of this process. Hopefully my next Devlog has a better timeframe, and parsing is working! Thank you all for stopping by, as always, please feel free to leave a comment with any questions you might have, or just feedback in general, as well as following and liking this post! See you all later! Agenda: - Get Parsing to a Functional State - Create a processor for Morph Shapes - Add rendering case for Morph Shapes Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 7 Alpha 3.0 - Pre Release 3 What I worked on today: - Implimented DefineMorphShape’s - Still not fully working ~ Implemented MorphFillStyle Translator ~ Implemented MorphLineStyle Translator - 1 and 2 ~ Implemented MorphGradient Translator ~ Implemented DefineMorphShape to Shape Builder * ~ Fixed parsers to work with builders Notes: Hello friends, I did a lot of work in this long extended session! I decided that it would make sense to just convert the morph variants to the normal variants, and use my current framework to just build 2 shapes, and interpolate them. There were a lot of issues, because there are some odd SWF bugs that happen sometimes, and I thought they were my own errors, so I spent like 2 hours trying to get things working, and I just ended up putting in some fall back code, and got things working, but now there are some weird color bugs, so I need to work those out, but overall it seems to be working ok. It’s been a rough week, so I hope it gets a little easier(It’s not gonna be with sprites, but it is what it is). Anyways, thank you guys for following along, for anyone else coming across this, feel free to like this comment, and follow the project if you think it’s cool. See you guys next time! Agenda: - Fix odd color issues with morph shapes - Clean up parsing output - Update the website to use new update Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 8 Alpha 3.0 What I accomplished today: - MAJOR UPDATE! – NEW RELEASE – MAJOR UPDATE! - Fixed Morph Shape issues - Fixed wrong MorphShape Order - Fixed the Matrix Signing Error - This has been causing the shape warping - Optimized Rendering Packets - Updated Web Implementation Notes: Hello friends, My most recent Devlog may have reflected some distress, but I finally figured it out! The weird warping of shapes was caused by a bug in a script I wrote about 5 months ago, that I thought was solid. There was a signing error, so all numbers ended up unproportionately large if they were negative, because the first bit was being counted towards the value. With a quick change of 2 lines, it completely changed the look of animations. As for the color bug with morph shapes, there is no bug at all, in fact the morph shapes typically are used as templates for sprites. So if you see any odd colored shapes, that’s why :D. Lastly, for some reason morph shapes are interpolated in reverse when using Skia, so I simply reversed the inputs, and the morph shapes are working as intended. The final thing was updating the main tag processor to send render instructions in batches, not one at a time, as to reduce overhead. This is a tough project, and I have poured my soul into it, if you think it’s cool, please feel free to follow it! Anyways, see you guys next time! Whats Next: - Create actual autobuild script for both WASM and Native Linux - Some time a little less in the future… - Adding Sprite Support - Will take a very long time - Adding Bitmap Support - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 9 Alpha 3.1- Pre Release 1 What I worked on today: - Implimented DefineBits - Parsing and rendering ~ Updated Dependency Script to include libJPEGTurbo ~ Created 2 test SWF files using jpexs ~ Fixed major shape disappearing issue Notes: Hello Friends! I spent quite a bit of time on this, both parsing and processing bitmaps. So far we only have one working bitmap parser of 6, and that is the most bare bones one. There are some weird errors that can occur with the JPEG headers, but it is impossible to find SWF files with DefineBits, so I made my own, one without the error, and one with it. It currently works for both, which is great, and I am excited to see where I can take this project. I am so close to being ready for Sprite support. I just need to keep pushing through these tags. Thank you to anyone who’s been keeping up with this, for others, feel free to follow if you think this is cool. See you guys next time! Agenda: - Implement the other 5 DefineBits Types - Get EMScripten libJPEGTurbo Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - In Progress - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 10 Alpha 3.1- Pre Release 2 What I worked on today: - Implimented the following: ~ DefineBits2 + Corresponding Bug testing Files ~ DefineBits 3+4 + Corresponding Bug testing Files ~ DefineBitsLossless + Corresponding Bug testing Files, and custom image assemblers for speed. ~ Changed Zlib to Wuffs for much faster decomp times. Notes: Hello Friends, it’s been a while, and I really try to avoid 10 hour devlogs, but I really wanted a good real world testable result for bitmaps before I made one. The main reason being that next on the list is sprites, which will complete the animation stage of this project. Leading us to Alpha 4.0. Now I wanted to take the time to name each coming stage, as each one will be long, yet monumental. I am nearly done with bitmaps, and soon enough, I will be working on the grueling task of implementing the sprites. I think so far the most difficult task was shapes, because it required a very deep understanding of the SWF shape system, but sprites might be a close second. I really appreciate you guys’ support, even though there aren’t too many of you. I love this project, and I am so happy I get to express it here. Agenda: - Impliment DefineBitsLossless2 Whats Next: - Create actual autobuild script for both WASM and Native Linux - Adding Sprite Support - Adding Bitmap Support - In Progress - Adding Jpeg + Font Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 11 Alpha 3.1- Pre Release 3 What I worked on today: ~ DefineBitsLossless2 32Bit + 8Bit ARGB Support ~ Implimented Actual Alpha Pixel Rasterization Notes: Hello friends! I finally finished implementing Bitmaps, and I am very excited to port to WASM, and release the bitmaps release. I am planning on working on fonts and text next, and doing whatever else sprites will require. After which I will work on sprite animation, and a far more polished UI, as well as an official linux release. I have decided to name the first official release(And ship), Alpha 4.0 Anim. I feel that this represents the fact that adding sprites will make this a fully funtional flash animation player. After this, I plan to finish tag support, and try to work on some simple ActionScript, to get buttons and other simple functions working. And the end goal would involve a fully functional ActionScript Engine, and a fully implimented Flash Player replacement. Anyways, I hope you all have a good day, see you all next time! Agenda: - Impliment DefineBitsLossless2 Whats Next: - Create actual autobuild script for both WASM and Native Linux - Font Support + Other small sprite prerequisites - Sprite Support - Add a GUI to Native Linux Build - Finally Release for Native Linux Builds - Port for Windows and MacOS - Work on more tags in the future… Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More Note: Image with brighter colors is 8Bit, and the one with the more nuanced colors is 32Bit
WasFlash Devlog # 11 Alpha 3.1- Pre Release 4 What I worked on today: ~ Started Work on sprite implementation. Notes: Hello everyone, it’s been quite a while, sorry about that. I am currently working on implementing sprites; it’s a lot of work and more difficult than anything else I’ve done for this project. I’m not sure if they will be done by the end of this, so I plan to ship this now, and possibly release another ship if I can finish it. I am very busy with my school’s performance of Les Mis; that is why this is a bit sparse. I appreciate your patience and hopefully we will have fully working sprites by the end of october. Agenda: - Work on sprite implimentation Resources: If you are completely lost, here is a good place to learn a little more about what I’m doing: Learn More
WasFlash Devlog # 11.5 Alpha 3.1- Pre Release 4.5 Progress Update: ~ Sprite Parsing and preprocessing done for rendering functionality ~ Currently working on the implementation and actual rendering now… Notes: This serves as a midway point in a more extensive development stage - A real devlog will be posted soon, at a better stopping point....
|
1792511316.1022744
|
1793116116.1022744
|
|
132
|
GLaDOS by @Ruben | Stardance
|
Ruben
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: GLaDOS by @Ruben | Stardance
|
1792568869.041064
|
1793173669.041064
|
|
133
|
3D engine for the ds by @soukie | Stardance
|
soukie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3D engine for the ds by @soukie | Stardance
|
1792792240.3939905
|
1793397040.3939905
|
|
134
|
Untitled project by @Blackout180 | Stardance
|
Blackout180
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Blackout180 | Stardanc Title: Untitled project by @Blackout180 | Stardance...
|
1792759875.984653
|
1793364675.984653
|
|
135
|
blahajnite by @lukas | Stardance
|
lukas
|
0
|
1.77
|
0
|
[]
|
[{"post_id": 53667, "ts": "202 [{"post_id": 53667, "ts": "2026-08-24T10:33:21Z", "hours": 1.7711, "text": "Made the base of everything its just a simple third person character with spring arms so you dont clip thru walls and the character is already slighly in the side its just really simple"}]...
|
Title: blahajnite by @lukas | Stardance
Devlogs:
Title: blahajnite by @lukas | Stardance
Devlogs:
Made the base of everything its just a simple third person character with spring arms so you dont clip thru walls and the character is already slighly in the side its just really simple...
|
1792644697.2112076
|
1793249497.2112076
|
|
136
|
Clientwarden by @CT5 | Stardance
|
CT5
|
0
|
282.93
|
0
|
[]
|
[{"post_id": 80638, "ts": "202 [{"post_id": 80638, "ts": "2026-10-18T11:24:17Z", "hours": 9.7372, "text": "BitWarden Vendor Architecture - Part 5 I kinda hoped that Sync would be easier but its pretty much as hard as Orchestrator, despite looking at the sync logic before hand and having to do less. I also rushed a ton of the stuff, so I need to have another look over the whole codebase and add comments and stuff before I continue again. I also need to handle all the todos and stuff. Tomorrow Im going to work on a lot of the bugs and errors with the runtime, sync and orchestrator because I did rush a lot of it."}, {"post_id": 79747, "ts": "2026-10-15T08:37:16Z", "hours": 9.7283, "text": "BitWarden Vendor Architecture - Part 4 I forgot to devlog today, so consider this 8h and 30mins and add 30mins to the next devlog. I finally finished Orchestrator which took waaaay too much time (almost 5 days) and I had to fix my plan a bit as well because of the roadblocks. Finishing off the rest of it was pretty easy and starting on the Sync class was much easier due to the massive amount of time it took for me to think of a solution to the syncing issue in the midst of the Orchestrator issues. Ill be posting a Sync finished devlog soon, probably tmrw, so stay tuned!"}, {"post_id": 78954, "ts": "2026-10-12T05:37:12Z", "hours": 8.7328, "text": "BitWarden Vendor Architecture - Part 3 Making the orchestrator is pretty difficult because tying everything together is soo difficult, especially with the attachment stuff. BitWarden has some weird concepts on how it works. When creating an item and pushing it to the server, the server generates the id for you and sends the whole cipher back. However, if the network request fails halfway through, then it can create it online, without giving you the id. There are 3 solutions to this. One, is to just re-push, which creates a duplicate. Another way to fix this, is to leave it and fail, which is not a good idea. The best way to combat this situation, is to pull the items from the server, and find the one that was created by comparing the key from the local and remote vaults. The issue, is that sometimes, there is no key, so we have to rely on comparing the fields alone, which isnt the best, but its the only way. This is pretty difficult to think of on the spot and to resolve quickly, so thats why it took me so long. The other issue, is that I’ve faced a roadblock. I didnt think of attachments when designing the runtime class, so I have to add more funcs to help with offline attachments. Another issue, is that the runtime class is getting kinda messy now, since there are like 5 of the same type of funcs so I have to clean that up too. And then, I have the largest issue that I have to fix. Syncing. Syncing is a pretty weird concept on BitWarden. If you update an item offline, you dont change the revision Date, the version changes it. However, if the server’s item was changed as well, then it gets complicated because you need to handle it yourself. The first thing you can do, is to merge the individual fields, like if the name was changed on the server, and the username was changed on the client, then merge both. However if the name was changed on the server and the client, then you can create a new item with (conflict X) and then push that. All this is pretty complicated, and its probably going to get even more complicated soon."}, {"post_id": 77766, "ts": "2026-10-08T06:17:11Z", "hours": 8.2647, "text": "BitWarden Vendor Architecture - Part 2 So I was able to finish off the BitWarden Network part which was somewhat hard, but it was just mainly repetitive stuff. I also got started on the BitWarden Runtime which wasnt too hard, although its sorta difficult to wrap your head around. After I finish off the runtime, I should be able to get started on the orchestrator and sync and versioning parts. For the Bitwarden Network I decided to integrate some stuff from the previous orchestrator that was wouldve been better to have in the Network and the same thing with Runtime as well."}, {"post_id": 76359, "ts": "2026-10-03T09:26:49Z", "hours": 9.3314, "text": "BitWarden Vendor Architecture - Part 1 Now that I’ve completed the Generic Base classes and stuff, I decided to work on the Vendor stuff. The main goal of the Architecturing is to make the architecture loose enough to work with BitWarden and 1Password, since if I focused solely on BitWarden again, it would have ended up being less abstract and I wanted it to be as abstract as possible without complicating things too much. Anyway, so I was able to finish off the crypto class and get started on the network class which pretty good progress. I did think of some additional ways to make it abstract, like making the UI call the Network class to get a list of all the URLs needed. Im hoping to get all the vendor classes finished by the end of next week and then start fixing the UI and UI Bridge in the following week."}, {"post_id": 74276, "ts": "2026-09-27T03:34:58Z", "hours": 9.3614, "text": "Finishing off the New Architecture So I was able to finish off the Architecture Implementations and add a few more classes, like the Thread and Utils files. I also added a ton of comments (one per func & one per class/struct) as per the style guidelines that I wrote. Writing the comments took me waaay too long, since some funcs were pretty generic and I couldnt think of what comment to put for that func. I still have a ton more to do, like the Generic Item Stuff which is really really confusing and I havent even gotten to that part yet. After all that, I need to start on the BitWarden Vendor stuff and then integrate all that into the UI Bridge which shouldnt be too hard."}, {"post_id": 72964, "ts": "2026-09-24T03:54:04Z", "hours": 8.3058, "text": "Vault Re-Architecturing - Part 2 So I started working on the architecture and it was pretty difficult. I was able to add the crypto, netowrk, orchestrator, profile, runtime, settings, sync and versioning. So currently, I’ve decieded to expose only the orchestrator, settings and versioning because those are the only essential features that the UI requires, and exposing any more would re-create a God Class. Essentially, this time I decided to abstract it enough so that it would work with 1Pass and Bitwarden as a guide so that it would be abstract enough, even though I’m probably never going to support another password manager API. One thing I didn’t account for was the fact that BitWarden has an Organisation thing where the Organisation has its own keys and stuff, which pretty much requires me to re-architecture it again. Im probably not going to implement the organisation thing any time soon, so I should be fine for now. I’m hoping to finish with the structure today and start on the implementations tmrw."}, {"post_id": 71612, "ts": "2026-09-21T05:03:56Z", "hours": 8.0961, "text": "Vault Re-Architecturing (again) So I again noticed a few bugs like last time, and had a think about the Vault itself. I noticed that its getting kinda complicated and things are getting intertwined and there are funcs that arent used, and func of which I dont even know what they do. So unlike last time, where I just asked claude how to structure things, I decided to do some proper professional re-archtecturing. I already had an overall plan on how things were going to be structured, but it was pretty hard. The doc format I decided to use was ARC42 which is a guide on how to make a proper software architecture doc. I did skip a few things, but those werent really relevant in my case so thats fine. I also decided to make a style guide since things were getting kinda messy. I havent fully finished the style guide yet, but its a start and I really need to get this new vault finished before Stardance ends. If you want to look at the doc, its on my GitHub Wiki and its pretty straightforward and extensive. It did take me quite a while to think of everything in depth, so I will be spending a ton more time since software architecturing is pretty difficult."}, {"post_id": 69611, "ts": "2026-09-17T12:42:56Z", "hours": 8.3583, "text": "Bug Fixes + Code Cleanup + Documentation Since I didn’t really have much to do, I decided to prepare my app for release. Currently there are quite a few things wrong with Clientwarden. First, it has tons of bugs, and the code is sorta messy, and the architecture is also kinda borked. The whole point of the past revamp was to prevent a God Class like last time where Vault held pretty much everything. Its much better now, but its far from perfect. This time, Im actually going to make a whole style guide and an architecture plan/guide which should be good. After that, I can actually implement the new architecture and then fix the remaining bugs. Tomorrow, ill probably do a more in depth test of the app and then fix them and repeat before actually trying to re-architecture."}, {"post_id": 68022, "ts": "2026-09-14T12:09:27Z", "hours": 8.3717, "text": "New Bitwarden Fields (Passport, Drivers License, Bank Account) So I was just looking at the vault.json in ClientWarden to check something, and I noticed that the data field was missing, which was pretty weird since Bitwarden or VaultWarden will not accept or respond with a json without a data field. When I looked closer, they had also added new fields like passport , bankAccount and driversLicense which means they added new Item Types. These Item Types aren’t supported yet, but I might as well implement them so that Clientwarden supports them early. Right now, you can create and see the new Item Types, but I havent implemented support to view or edit these new types."}, {"post_id": 65866, "ts": "2026-09-11T09:26:44Z", "hours": 8.0503, "text": "Mac OS 27 Support + Tests I recently switched to Mac OS 27 Public Beta, which turned out to a very bad idea, as I hated the new icons and especially the new lighter glass. I was hoping that when MacOS 27 actually releases it would be fixed. Well, it released, and it wasn’t fixed. So I had to fix the UI for MacOS 27 and it was kinda pending anyway since it was sorta against Apple’s UI guidelines, but it looked amazing. The new one doesnt look as good, but its ok. Ill be fixing it in the days to come. I’m also working on more tests, specifically for the network part, since the network part is an important part of the vault."}, {"post_id": 64675, "ts": "2026-09-09T08:18:01Z", "hours": 8.6503, "text": "Finished Android UI So I was able to finally finish off the Android UI, and I was able to finish it off dramatically faster than I spent on the Mac OS UI. Mainly because, with the Mac OS UI, I had to spend a lot more time on the architecture and I had to revamp the Vault itself. My favorite part about making the UI is the About Screen, where I can hide tons of really cool effects and easter egg. If you download the Android App and go to Settings and about, you will see an App Icon which if you click 3 times, will spin around, kinda like the chrome easter egg."}, {"post_id": 62728, "ts": "2026-09-06T07:07:08Z", "hours": 8.6769, "text": "Android UI - Details Screen I was able to implement the Password History Screen as well as the Reprompt UI and the Clientwarden Image class so that I can use an Image, Icon or App Resource. I still need to add a progress bar to the Attachment Item, Add callbacks for the top bar, add multi select support (tbh i dont really know how Im going to implement this) and do the rest of the stuff from the readme. I do want to focus more on the Mac OS side as well, bc I want to support Golden Gate and add a few features. The Main features that need to be implemented are the Sign Up support, Offline Vault support, and a ton more. If you want to help with the project, dm me at @CT5 on slack."}, {"post_id": 60174, "ts": "2026-09-02T12:01:52Z", "hours": 9.1489, "text": "Android Support So I decided to work mainly on Android UI Support for now and then move onto Iced on Linux. I was able to work on the Details Screen as well as finish the Items Screen and fix some main stuff for the Nav Screen like adding Folder support and stuff. I also started work on getting the Android UI to compile on CMake and it looks like its going to be way harder than I thought it would be initially. Tbh it looks like Apple’s XCode Swift UI combo is generally the best, since they have a declarative style UI and things are pretty easy to Implement. With Windows, its XAML which wouldn’t fit in my situation, and for Android its almost perfect, except gradle is a pain and there a hundred types of everything, like the IconButton , Button , FilledTonalButton , TextButton , etc, and those are just the ones I learnt rn. Unlike Android, SwiftUI just has one type of button which can do everything which is pretty good for beginners and advanced ppl. And the best part, Swift UI can have negative padding, which is genuinaly PEAK!"}, {"post_id": 57922, "ts": "2026-08-30T08:01:03Z", "hours": 8.9831, "text": "Linux + Android Support I was able to do a ton of work for the past few days. I was working on Linux Support in Rust using Iced but it was pretty difficult to use to look good since it didn’t have any native nav panel elements and required me to make my own. So I decided to go to the Android side. Working with Android Kotlin was a bit difficult at first, but then it became much much easier. It was kinda annoying that I have to import literally everything, including the conversion things. By the end of the day, my imports were basically half the file. Either way, I decided to work on the Nav Screen first, and then the Items Panel which went pretty well. I think it turned out pretty well, but if you have any feedback, share it in the comments."}, {"post_id": 54965, "ts": "2026-08-26T12:19:21Z", "hours": 6.1822, "text": "Bug Fixes + Linux UI Ok, so I added an easter egg (see if you can find it), and I also switched to the list type Nav Panel which I had implemented but stashed before. I decided to restore it because it looked better and was a bit more organised, code-wise, and I thought it would help remove the shadows to fix light mode. I also had to change the folder button to glass and I also did a bit of work on the wiki. I decided to restart with the Windows UI, and I was planning on having a NavPanel, ItemsPanel and SidePanel with GenericItem’s which could perform the role of the TOTP Field, Text Field, Password Field, etc. However, I couldn’t do that bc WinUI isn’t declaritive like SwiftUI so I had to either create a bunch of xaml files and types, or just hide and show elements. Now that I think of it, I could’ve also populated it via C++, but I already moved on to the Linux side. For Linux, I was thinking of using QT with a catppuccin theme, since I’m very very bad at making color palette’s and stuff and the palette is pretty important. Anyway, after battling with QT with QML to work on MacOS and to even configure, bc it couldn’t find the deps from Conan, I was finally able to get it to work. I’m going to start working on the NavPanel tmrw. For now, Im going to have to develop the Linux UI on Mac, but after I finish the UI, ill move onto linux to finish it off."}, {"post_id": 52140, "ts": "2026-08-22T07:17:36Z", "hours": 5.7122, "text": "Adding Tests Since I wanted to revamp the old crypto stuff to support Argon2ID, I decided to create some tests to know if I’ve implemented it correctly or if I mess smth up. It took me waaay too long to figure this out. I had to fix a lot of stuff like adding a fake Clipboard, Storage and UI Bridge just so that I could link the backend, but in the end it was worth it."}, {"post_id": 50062, "ts": "2026-08-19T03:12:28Z", "hours": 5.2053, "text": "Autofill Support Ok, so it took me a while to figure out how to implement Autofill support. I dont have the Apple Dev License yet, so unfortunatly I couldn’t test it and the only thing I could do is see compiler errors and fix them. So the way it works, is that it has a notification thing, and the extension notifies the vault app, asking for all the logins that match the website, it then puts the website in the keychain so that the app can access it and then the app checks the keychain, writes the result to the same keychain and notifies the extension. I also made this cool screenshots of it infront of a really cool bg and it looks sooo cool."}, {"post_id": 47492, "ts": "2026-08-15T13:17:45Z", "hours": 2.8094, "text": "Drag and Drop Support Usually if I want to implement a new feature, I would ask Claude how I would do it and what APIs I should use, note that Im not just vibe coding everything, Im just asking it how to do smth. This time tho, I decided not to do that and to directly look at Apple Docs, and it was pretty helpful. I was able to figure out how to implement more animations and figure out how to implement drag and drop support which was kinda hard but I was able to implement it. I also fixed a folder bug and did some stuff for the wiki."}, {"post_id": 46202, "ts": "2026-08-13T08:27:22Z", "hours": 4.7533, "text": "Multi Select Support I added a multi-select support thing so that you can press shift and select all the items you want to delete, restore, perm delete, archive or un archive. I also made it so that there would be a biometric button on the autofill unlock window and I also made it shake when the password is incorrect, its kinda fun to just press unlock 100 times to see it shake. Next, Im going to add animation and add support for device unlock."}, {"post_id": 44485, "ts": "2026-08-10T08:48:11Z", "hours": 2.1506, "text": "Archive Support Ok, so Im still waiting for the Apple Developer License so until then I can’t implement a lot of the really good features. Currently I’ve just implemented Archive Support and some fixes like to Check for missing Websocket Events . Im going to be doing a full test soon, once I finish all the features for v1.1.0. I also added a networking page for the wiki."}, {"post_id": 43171, "ts": "2026-08-08T09:09:12Z", "hours": 5.3011, "text": "Passkey + Biometric Support + Security Updates So I was talking to @/Darren and they told me that I shouldn’t store auth keys in plaintext. I didn’t think that storing the keys would be a big issue since you needed a master Password to use them, but I decided to be safe anyway and I stored them in Keychain. Currently I can’t really implement most of the Keychain stuff because I don’t have an Apple Developer License yet. I also implemented broken passkey login support and also broken biometric support. They are broken bc I can’t really use them without a dev license"}, {"post_id": 41214, "ts": "2026-08-05T09:22:47Z", "hours": 7.8433, "text": "AutoFill Unlock Window So while waiting to get the Apple Developer License for the App Group Setup and Code Signing Setup, I decided to work on AutoLock Support for v1.1.0 and the tiny AutoFill unlock window. I also tried to add support for logging in via passkeys, until I realised that I can’t since I need the dev license and I need to add my app bundle name to my vaultwarden instance for it to work. I also implemented support for clientwarden to stay open in the background. The second screenshot is just a cool little failure bc I forgot to give it a liquid glass background."}, {"post_id": 38651, "ts": "2026-08-01T04:51:47Z", "hours": 0.9225, "text": "Crypto Docs Currently Im working on the Wiki, but after that, Ill work on v1.1.0 and the security stuff for v1.0.0. There really isn’t much so say here, bc its mostly just adding more stuff so docs."}, {"post_id": 38617, "ts": "2026-08-01T03:18:13Z", "hours": 8.1911, "text": "First Release Candidate - Functionality So I was able to fix quite a few bugs and implement a bunch of the last features I needed to add for the first release candidate. So I changed the network timeout, fixed the annoying padding on some generic items, fix sync, remove duplicate ciphers, fix race conditions, fix item duplication when offline, login view exceptions, change the title placeholder to value, prevent click to copy when editing, prevent sshKey and note from creating linked field, add delete folder message and make the button red, add a custom item for identity so that there arent 4 different fields for the name, add the remove field button, create the codeql thing and fix some stuff so that clientwarden would work with the official Bitwarden servers."}, {"post_id": 36280, "ts": "2026-07-28T08:52:43Z", "hours": 5.9608, "text": "Icon + Password Generator I fixed the SSH Key Cannot decrypt error and I also finished off a few things for the beta release. I designed an icon in Icon Composer, which is a really great app btw, why can’t windows have a proper UI app like that, and fixed the cmake so that it would show up. I also changed the about page to have a uniform height. The only issue is that there is a ton of blank space, so Im probably going to have to make some art for it myself. I also made a really cool password generator UI for passwords and stuff in the Login Item. I still need to make an ssh key thing, although I might do that on the next release."}, {"post_id": 34497, "ts": "2026-07-25T08:09:36Z", "hours": 7.5661, "text": "Clipboard + Screenshot Support & Settings UI I’ve pretty much fixed most of the larger bugs so I’m currently just working on the essential missing features that ClientWarden needs. I was able to add clipboard support, settings bridge, screenshot option, finish off websocket stuff, a proper versioning system and a much better settings UI, as well as proper folder support and a reprompt window for those sensitive notes. I’m probably going to make a cool graphic for the about window soon, so stay tuned."}, {"post_id": 32232, "ts": "2026-07-21T08:36:22Z", "hours": 3.9908, "text": "Bug Fixes Currently Im just focusing on making bug fixes and then working on new features. Because I’d rather fix it and then work on new features, rather than work on new features and fix a bunch of them later. A bunch of the bugs were caused by the vault rewrite or just me forgetting to finish implementing it. Anyway, so I fixed the Upload, Remove and Download Attachment, as well as the Add Website Button, invalid password vault unlock crash, I also made it to preserve the current tab (Bitwarden or Custom Server), refresh items panel every 5s, remove password after login and unlock, edit when creating an item, show deletion date and show password history date. I also noticed that when I create an empty ssh key and edit it with bitwarden, it fails, making a [cannot decrypt] error."}, {"post_id": 31048, "ts": "2026-07-19T04:02:54Z", "hours": 6.5961, "text": "Bug Fixes So I’ve done a lot of stuff. I just finished porting the Vault UI Bridge to the new Vault API which requires you to get an item from Vault. I also forgot to implement saving support for Card, Identity, Note and SSH Key, so I implemented that too. Also I fixed the favorites issue. I also fixed the TOTP field, bc when it was empty it would just have no code and would still show. The only other bugs I have left to fix are the add website bug, attachment bug and password preservation bug. Then I can get started on the other features like folder support, password gen support, pfp support, folder tree view support and clipboard support."}, {"post_id": 27540, "ts": "2026-07-13T06:03:33Z", "hours": 9.4325, "text": "Vault Rewrite The Vault rewrite is going pretty well so far. I’ve already finished the Vault Rewrite, but the only thing I have left is porting the old GenericItem stuff to the new Vault. At first, I was just fixing stuff that ended up in the error log, which was a bad idea, so I decided to skim through all the files and fix them as I saw them, which went pretty well. @/Dexrn suggested that I should make builders like Generic Item from the Vault and to have all the other Login Item and stuff a derived class from Generic Item using templates so that GenericItem would still output a LoginItem*. So I decided to have the normal Generic Item and then an Impl one based on Generic Item with all the Implementation functions in a protected part in Generic Item. Then Generic Item has its own GenericItem* ones, but the derived ones have their own LoginItem* ones from GenericItem Impl. Its pretty confusing but its easier to understand once you have a look. There is just a bit code that I need to fix, mainly CW Thread and then I should be done"}, {"post_id": 25053, "ts": "2026-07-09T00:31:15Z", "hours": 9.2058, "text": "Vault Rewrite So I’ve faced a couple of vault bugs over the past few days like [error could not decrypt] which is a serious error that could destroy anyone’s Bitwarden vault. The other issue that I’d been delaying for a while was the Vault Revamp, since the vault was incredibly messy and held stuff for networking, crypto and session, so I decided to start from scratch and copy and fix the code as I went. When I started from scratch, my mind went blank, I didn’t even know where to start, since the Network stuff needed session stuff and the crypto stuff, so I was beyond confused. I spent a day or two figuring it out, with no success. Then I asked ChatGPT because my Claude credits had just expired, and the second it gave me an answer, I knew I was cooked. I then asked Gemini, with the same results. Afterward I asked Claude, and the solution it gave me didn’t really work. It did tell me that it was a good idea to separate it into a Network, Session and Crypto class. Then I asked @/dexrn and they helped me figure out how to separate it. Essentially, what I ended up with is Vault does the CreateItem stuff which calls funcs in the Network and Session classes. The crypto class only holds the funcs and so does the Networking class. The session class holds all the vaultData and secret data."}, {"post_id": 22899, "ts": "2026-07-05T15:17:31Z", "hours": 5.5311, "text": "Attachment Support + Bug Fixes I was able to clean up the messy bridge code and add attachment support. I also fixed some bugs, like when you enter an incorrect email or password, it would crash the whole app in the login view, and also I added an error toast for each of the errors. I still need to implement a ton more stuff, like the freezing issue with the vault and the random signouts as well as making the vault faster."}, {"post_id": 21377, "ts": "2026-07-03T08:49:22Z", "hours": 3.5994, "text": "Login Item Support - SidePane I was able to finish the login viewer part of the SidePane which is the hardest part since it needs to show not only the username and password, but the totp code and the websites part. The only other part I need to work on, is the attachments callback and the card, identity, note and sshKey parts. I also fixed the padding for the details on the bottom which were touching the very bottom. I also had to add a few funcs into the backend to get the creation, modification and deletion date."}, {"post_id": 20630, "ts": "2026-07-02T08:35:03Z", "hours": 1.6858, "text": "Bug Fixes I was able to fix a few things in the Nav Panel Bridge, mainly renaming support. I also implemented Items Panel and a bit of the SidePanel. The Sidepanel is the hardest part, especially the part where it needs to save and the part where it needs to be populated. I also made items to automatically open when they are created. The only other things that I need to do are PFP support, make the vault faster, implement the bridge for the settings menu, add an option to allow screenshotting in settings and fix the random signouts in the vault."}, {"post_id": 19834, "ts": "2026-07-01T07:09:40Z", "hours": 2.8203, "text": "Finish up Nav Panel Bridge So I was able to finish building the Nav Panel Bridge. It was a bit difficult since I needed to fix a few things in the UI code, so that it could map the callbacks correctly. For some reason, Objective-C doesn’t have any syntax highlighting and it doesn’t check for errors at compile time, so you just end up with it breaking at runtime. I also forgot to add a UI element to rename the folder and the Vault is kinda slow to open. I also need to highlight the selected Item and add an animation for when the window extends."}, {"post_id": 19089, "ts": "2026-06-30T09:19:54Z", "hours": 4.2778, "text": "Start on the UI Bridge I was able to wire up the Vault and the UI today. I haven’t finished adding callbacks for the NavPanel or the Items Panel or the SidePanel, which is pretty much the whole vault, but I was able to do the Login, Unlock and ClientwardenApp callbacks. I had to make these callbacks in objective c, and it was soo hard, bc there wasn’t any good syntax highlighting and if there was an error, I had to wait for it to build and then look through the messy build logs and figure out what was wrong. I also noticed that the password field was a normal text field so I changed that and I also made it so that you can’t screenshot the vault. The login and unlock buttons also behaved kinda weird, so I fixed that. The only part of the Login Page that I haven’t done yet is the profile picture. I also added a loading screen btw."}, {"post_id": 18212, "ts": "2026-06-29T08:45:08Z", "hours": 2.1806, "text": "Cleaning Up Item Classes I decided to clean up my backend Vault Code since the item management code was pretty much the same copy pasted thing, so I decided to make all item classes, LoginItem, CardItem, IdentityItem, NoteItem, SSHKeyItem, a derived class from GenericItem. This was pretty difficult tho, because GenericItem returns GenericItem, and LoginItem and all the rest need GenericItem to return their class. I asked @dexrn , and they told me about covariant returns, where basically you can return GenericItem but then override it in LoginItem and return a LoginItem by calling the the GenericItem func and then converting it to LoginItem. I also noticed that the attachment code in the individual Item classes were out of date, so this helped organise them. There isn’t really much so show so Ill just post a scrshot of the build."}, {"post_id": 18120, "ts": "2026-06-29T04:02:19Z", "hours": 2.7272, "text": "Settings Page + Lock Support + Attachment Item So I was able to finish off some simple tasks as well as adding a settings page, a lock button on the menu bar under Vault and making the trash tool bar icons. I also added an Attachment Item with a progress bar. I also fixed added a proper roadmap in the readme for Mac OS, Windows and Linux Support. After I get MacOS working, ill probably replace the Windows image with a Mac OS one."}, {"post_id": 17487, "ts": "2026-06-28T09:13:47Z", "hours": 2.6439, "text": "UI States So I was able to finish off the UI by adding a Login and Unlock Page and adding states so that when the app runs, a getState callback func is run to know if the vault should present the Login Page or the Unlock Page. Once the vault is Unlocked or Logged into, the state will be switched to VaultUI. I also made the Unlock page fixed to a small window since it doesn’t really present much info."}, {"post_id": 17336, "ts": "2026-06-28T02:31:50Z", "hours": 1.5056, "text": "Unfortunatly, just as I was going to push my changes after the last devlog, I wanted to remove some files, so I ran git-filter-repo and it removed all my staged files. So basically, pretty much all the work I did for the past 4h yesterday were gone. I tried using reflog and even Disk Drill, but I wasn’t able to get it back. Thankfully, while I was trying to figure out how animations worked yesterday by asking claude, some of my code was there. It wasn’t a lot but I was able to reconstruct the rest from memory. I did remember some things today as well so I fixed those too. There will be another devlog today so stay tuned."}, {"post_id": 16805, "ts": "2026-06-27T09:05:03Z", "hours": 3.9606, "text": "Finish off Item Panel + Bug Fixes I was able to finish off the Items Panel by making the search bar and the new item button. I also fixed the animation issue that was present before. I also added some content things where it says No Items and stuff so that it doesnt look incomplete and blank. I was able to also get it to run in CMake and get it built into an app. There is still much to do, like changing the icon and making a github actions thing, and the UI Bridge. The UI Bridge should be pretty easy, hopefully."}, {"post_id": 16250, "ts": "2026-06-26T12:17:21Z", "hours": 7.1319, "text": "Finish off SidePanel + Nav Panel + Items Panel I spent wayy too long getting animations to work and it still doesnt work. Anyway, so I was able to finish off the SidePanel and the Navigation Panel as well as the Items Panel. The Navigation Panel now has a callback which passes the Items which are then passed to ItemsPanel to display them. The issue is that I can’t create an animation because of Swift States or smth. If I go to another navigation tab and then go back, the animation doesnt apply. I also added a mininum window width and height. I almost forgot, I was also able to add edit support which involved rewriting a bunch of code."}, {"post_id": 15581, "ts": "2026-06-25T10:44:28Z", "hours": 5.0989, "text": "Finished Generic Item + Field Item Ok, so I got a lot done. I was able to finish creating Generic Item and FieldItem. I decided to combine Websites in the Generic Item struct since it was going to be grouped together anyway, but maybe I should make a derived struct or class or smth next time. I might try and clean it up tho, because I’d rather clean it up now rather than never. I also added the TOTP and Websites Editable thing which were the hardest parts to add. Here are a couple of screenshots of all the stuff I’ve added."}, {"post_id": 14310, "ts": "2026-06-23T12:12:27Z", "hours": 3.505, "text": "Sidepane Stuff I was able to get most of the sidepane working. The only thing I have left is the custom fields and the bottom dates and attachment stuff. I used an array of a data struct which is used to store the fields that need to be displayed. This way I can separate the UI from the Vault UI code and the Vault. The VaultUI just bridges the Vault and UI code. I think it looks good so far, and I even added a nice glow effect when you reveal a password or item."}, {"post_id": 13657, "ts": "2026-06-22T12:38:01Z", "hours": 6.0439, "text": "UI Design So I made a lot of progress in designing the UI for the native MacOS version. It was really fun to design a UI with liquid glass. Usually I don’t like liquid glass on phones, but on a computer it really looks good. But when I try and close the nav menu, it has this sliding animation where it goes underneath the other icons with the border which looks kinda off. Im not too sure how to disable the collapse button, but it should be fine for now. Ive implemented an error modal as well to notify the user of errors instead of making them read the log files. The font kinda looks off and the sizing as well, but Im not sure how to fix it. If you know how to improve it, tell me in the comments. Next devlog, Im going to try and get it to work with cmake or ill just keep developing the UI."}, {"post_id": 12945, "ts": "2026-06-21T05:50:19Z", "hours": 1.4514, "text": "Switch to MacOS tbh the WinUI code is insanely messy and needs to be fixed, so I’ll be fixing it later. I think it would be good for me to start on the mac os side of things because it would allow me to work on less messy code. I think it would be much better to work on new code rather than fixing old code. There are still a ton of random bugs where sometimes editing will not work and some things will fail randomly."}, {"post_id": 12353, "ts": "2026-06-20T04:48:39Z", "hours": 2.2797, "text": "Getting ClientWarden Working Again! After almost 2 weeks of setting up my mac, I was finally able to create a windows VM and get Clientwarden to build on ARM64. Although it was a bit difficult. First I needed to get all the vcpkg dependencies, so I did vcpkg install. One of the dependencies was boost which needed to build some python library. For some reason it was giving me a heap error stating that it didn’t have enough heap space. I looked at task manager and it did indeed use up all my 8GB of ram. I tried increasing my windows swap but it didn’t work, so I had to increase the ram on the vm to 64GB, even though I had 16GB of ram. Mac OS was able to speedily transfer and compress all that memory to its swap, and after a while, it finally built the lib taking about ~30GB of memory"}, {"post_id": 3375, "ts": "2026-06-06T08:29:39Z", "hours": 1.6608, "text": "Bug Fixes I finally got the bugs fixed and after a long time of debugging I was able to fix the folder error. I still have a ton of bugs to fix, but the folder one was the hardest one so far."}, {"post_id": 192, "ts": "2026-06-01T07:02:56Z", "hours": 1.2086, "text": "Quality Checks + Documentation I just finished quality checking the whole app and it is kinda buggy in some places so I decided to write it all down. I want to address these bugs before I work on more features, as well as documenting the code and the Bitwarden/Vaultwarden API. Vaultwarden API is a mess of the old and new Bitwarden API. Anyway I caught a ton of bugs that I will address before finishing off WebSockets."}]...
|
Title: Clientwarden by @CT5 | Stardance
Devlogs:
Title: Clientwarden by @CT5 | Stardance
Devlogs:
Quality Checks + Documentation I just finished quality checking the whole app and it is kinda buggy in some places so I decided to write it all down. I want to address these bugs before I work on more features, as well as documenting the code and the Bitwarden/Vaultwarden API. Vaultwarden API is a mess of the old and new Bitwarden API. Anyway I caught a ton of bugs that I will address before finishing off WebSockets.
Bug Fixes I finally got the bugs fixed and after a long time of debugging I was able to fix the folder error. I still have a ton of bugs to fix, but the folder one was the hardest one so far.
Getting ClientWarden Working Again! After almost 2 weeks of setting up my mac, I was finally able to create a windows VM and get Clientwarden to build on ARM64. Although it was a bit difficult. First I needed to get all the vcpkg dependencies, so I did vcpkg install. One of the dependencies was boost which needed to build some python library. For some reason it was giving me a heap error stating that it didn’t have enough heap space. I looked at task manager and it did indeed use up all my 8GB of ram. I tried increasing my windows swap but it didn’t work, so I had to increase the ram on the vm to 64GB, even though I had 16GB of ram. Mac OS was able to speedily transfer and compress all that memory to its swap, and after a while, it finally built the lib taking about ~30GB of memory
Switch to MacOS tbh the WinUI code is insanely messy and needs to be fixed, so I’ll be fixing it later. I think it would be good for me to start on the mac os side of things because it would allow me to work on less messy code. I think it would be much better to work on new code rather than fixing old code. There are still a ton of random bugs where sometimes editing will not work and some things will fail randomly.
UI Design So I made a lot of progress in designing the UI for the native MacOS version. It was really fun to design a UI with liquid glass. Usually I don’t like liquid glass on phones, but on a computer it really looks good. But when I try and close the nav menu, it has this sliding animation where it goes underneath the other icons with the border which looks kinda off. Im not too sure how to disable the collapse button, but it should be fine for now. Ive implemented an error modal as well to notify the user of errors instead of making them read the log files. The font kinda looks off and the sizing as well, but Im not sure how to fix it. If you know how to improve it, tell me in the comments. Next devlog, Im going to try and get it to work with cmake or ill just keep developing the UI.
Sidepane Stuff I was able to get most of the sidepane working. The only thing I have left is the custom fields and the bottom dates and attachment stuff. I used an array of a data struct which is used to store the fields that need to be displayed. This way I can separate the UI from the Vault UI code and the Vault. The VaultUI just bridges the Vault and UI code. I think it looks good so far, and I even added a nice glow effect when you reveal a password or item.
Finished Generic Item + Field Item Ok, so I got a lot done. I was able to finish creating Generic Item and FieldItem. I decided to combine Websites in the Generic Item struct since it was going to be grouped together anyway, but maybe I should make a derived struct or class or smth next time. I might try and clean it up tho, because I’d rather clean it up now rather than never. I also added the TOTP and Websites Editable thing which were the hardest parts to add. Here are a couple of screenshots of all the stuff I’ve added.
Finish off SidePanel + Nav Panel + Items Panel I spent wayy too long getting animations to work and it still doesnt work. Anyway, so I was able to finish off the SidePanel and the Navigation Panel as well as the Items Panel. The Navigation Panel now has a callback which passes the Items which are then passed to ItemsPanel to display them. The issue is that I can’t create an animation because of Swift States or smth. If I go to another navigation tab and then go back, the animation doesnt apply. I also added a mininum window width and height. I almost forgot, I was also able to add edit support which involved rewriting a bunch of code.
Finish off Item Panel + Bug Fixes I was able to finish off the Items Panel by making the search bar and the new item button. I also fixed the animation issue that was present before. I also added some content things where it says No Items and stuff so that it doesnt look incomplete and blank. I was able to also get it to run in CMake and get it built into an app. There is still much to do, like changing the icon and making a github actions thing, and the UI Bridge. The UI Bridge should be pretty easy, hopefully.
Unfortunatly, just as I was going to push my changes after the last devlog, I wanted to remove some files, so I ran git-filter-repo and it removed all my staged files. So basically, pretty much all the work I did for the past 4h yesterday were gone. I tried using reflog and even Disk Drill, but I wasn’t able to get it back. Thankfully, while I was trying to figure out how animations worked yesterday by asking claude, some of my code was there. It wasn’t a lot but I was able to reconstruct the rest from memory. I did remember some things today as well so I fixed those too. There will be another devlog today so stay tuned.
UI States So I was able to finish off the UI by adding a Login and Unlock Page and adding states so that when the app runs, a getState callback func is run to know if the vault should present the Login Page or the Unlock Page. Once the vault is Unlocked or Logged into, the state will be switched to VaultUI. I also made the Unlock page fixed to a small window since it doesn’t really present much info.
Settings Page + Lock Support + Attachment Item So I was able to finish off some simple tasks as well as adding a settings page, a lock button on the menu bar under Vault and making the trash tool bar icons. I also added an Attachment Item with a progress bar. I also fixed added a proper roadmap in the readme for Mac OS, Windows and Linux Support. After I get MacOS working, ill probably replace the Windows image with a Mac OS one.
Cleaning Up Item Classes I decided to clean up my backend Vault Code since the item management code was pretty much the same copy pasted thing, so I decided to make all item classes, LoginItem, CardItem, IdentityItem, NoteItem, SSHKeyItem, a derived class from GenericItem. This was pretty difficult tho, because GenericItem returns GenericItem, and LoginItem and all the rest need GenericItem to return their class. I asked @dexrn , and they told me about covariant returns, where basically you can return GenericItem but then override it in LoginItem and return a LoginItem by calling the the GenericItem func and then converting it to LoginItem. I also noticed that the attachment code in the individual Item classes were out of date, so this helped organise them. There isn’t really much so show so Ill just post a scrshot of the build.
Start on the UI Bridge I was able to wire up the Vault and the UI today. I haven’t finished adding callbacks for the NavPanel or the Items Panel or the SidePanel, which is pretty much the whole vault, but I was able to do the Login, Unlock and ClientwardenApp callbacks. I had to make these callbacks in objective c, and it was soo hard, bc there wasn’t any good syntax highlighting and if there was an error, I had to wait for it to build and then look through the messy build logs and figure out what was wrong. I also noticed that the password field was a normal text field so I changed that and I also made it so that you can’t screenshot the vault. The login and unlock buttons also behaved kinda weird, so I fixed that. The only part of the Login Page that I haven’t done yet is the profile picture. I also added a loading screen btw.
Finish up Nav Panel Bridge So I was able to finish building the Nav Panel Bridge. It was a bit difficult since I needed to fix a few things in the UI code, so that it could map the callbacks correctly. For some reason, Objective-C doesn’t have any syntax highlighting and it doesn’t check for errors at compile time, so you just end up with it breaking at runtime. I also forgot to add a UI element to rename the folder and the Vault is kinda slow to open. I also need to highlight the selected Item and add an animation for when the window extends.
Bug Fixes I was able to fix a few things in the Nav Panel Bridge, mainly renaming support. I also implemented Items Panel and a bit of the SidePanel. The Sidepanel is the hardest part, especially the part where it needs to save and the part where it needs to be populated. I also made items to automatically open when they are created. The only other things that I need to do are PFP support, make the vault faster, implement the bridge for the settings menu, add an option to allow screenshotting in settings and fix the random signouts in the vault.
Login Item Support - SidePane I was able to finish the login viewer part of the SidePane which is the hardest part since it needs to show not only the username and password, but the totp code and the websites part. The only other part I need to work on, is the attachments callback and the card, identity, note and sshKey parts. I also fixed the padding for the details on the bottom which were touching the very bottom. I also had to add a few funcs into the backend to get the creation, modification and deletion date.
Attachment Support + Bug Fixes I was able to clean up the messy bridge code and add attachment support. I also fixed some bugs, like when you enter an incorrect email or password, it would crash the whole app in the login view, and also I added an error toast for each of the errors. I still need to implement a ton more stuff, like the freezing issue with the vault and the random signouts as well as making the vault faster.
Vault Rewrite So I’ve faced a couple of vault bugs over the past few days like [error could not decrypt] which is a serious error that could destroy anyone’s Bitwarden vault. The other issue that I’d been delaying for a while was the Vault Revamp, since the vault was incredibly messy and held stuff for networking, crypto and session, so I decided to start from scratch and copy and fix the code as I went. When I started from scratch, my mind went blank, I didn’t even know where to start, since the Network stuff needed session stuff and the crypto stuff, so I was beyond confused. I spent a day or two figuring it out, with no success. Then I asked ChatGPT because my Claude credits had just expired, and the second it gave me an answer, I knew I was cooked. I then asked Gemini, with the same results. Afterward I asked Claude, and the solution it gave me didn’t really work. It did tell me that it was a good idea to separate it into a Network, Session and Crypto class. Then I asked @/dexrn and they helped me figure out how to separate it. Essentially, what I ended up with is Vault does the CreateItem stuff which calls funcs in the Network and Session classes. The crypto class only holds the funcs and so does the Networking class. The session class holds all the vaultData and secret data.
Vault Rewrite The Vault rewrite is going pretty well so far. I’ve already finished the Vault Rewrite, but the only thing I have left is porting the old GenericItem stuff to the new Vault. At first, I was just fixing stuff that ended up in the error log, which was a bad idea, so I decided to skim through all the files and fix them as I saw them, which went pretty well. @/Dexrn suggested that I should make builders like Generic Item from the Vault and to have all the other Login Item and stuff a derived class from Generic Item using templates so that GenericItem would still output a LoginItem*. So I decided to have the normal Generic Item and then an Impl one based on Generic Item with all the Implementation functions in a protected part in Generic Item. Then Generic Item has its own GenericItem* ones, but the derived ones have their own LoginItem* ones from GenericItem Impl. Its pretty confusing but its easier to understand once you have a look. There is just a bit code that I need to fix, mainly CW Thread and then I should be done
Bug Fixes So I’ve done a lot of stuff. I just finished porting the Vault UI Bridge to the new Vault API which requires you to get an item from Vault. I also forgot to implement saving support for Card, Identity, Note and SSH Key, so I implemented that too. Also I fixed the favorites issue. I also fixed the TOTP field, bc when it was empty it would just have no code and would still show. The only other bugs I have left to fix are the add website bug, attachment bug and password preservation bug. Then I can get started on the other features like folder support, password gen support, pfp support, folder tree view support and clipboard support.
Bug Fixes Currently Im just focusing on making bug fixes and then working on new features. Because I’d rather fix it and then work on new features, rather than work on new features and fix a bunch of them later. A bunch of the bugs were caused by the vault rewrite or just me forgetting to finish implementing it. Anyway, so I fixed the Upload, Remove and Download Attachment, as well as the Add Website Button, invalid password vault unlock crash, I also made it to preserve the current tab (Bitwarden or Custom Server), refresh items panel every 5s, remove password after login and unlock, edit when creating an item, show deletion date and show password history date. I also noticed that when I create an empty ssh key and edit it with bitwarden, it fails, making a [cannot decrypt] error.
Clipboard + Screenshot Support & Settings UI I’ve pretty much fixed most of the larger bugs so I’m currently just working on the essential missing features that ClientWarden needs. I was able to add clipboard support, settings bridge, screenshot option, finish off websocket stuff, a proper versioning system and a much better settings UI, as well as proper folder support and a reprompt window for those sensitive notes. I’m probably going to make a cool graphic for the about window soon, so stay tuned.
Icon + Password Generator I fixed the SSH Key Cannot decrypt error and I also finished off a few things for the beta release. I designed an icon in Icon Composer, which is a really great app btw, why can’t windows have a proper UI app like that, and fixed the cmake so that it would show up. I also changed the about page to have a uniform height. The only issue is that there is a ton of blank space, so Im probably going to have to make some art for it myself. I also made a really cool password generator UI for passwords and stuff in the Login Item. I still need to make an ssh key thing, although I might do that on the next release.
First Release Candidate - Functionality So I was able to fix quite a few bugs and implement a bunch of the last features I needed to add for the first release candidate. So I changed the network timeout, fixed the annoying padding on some generic items, fix sync, remove duplicate ciphers, fix race conditions, fix item duplication when offline, login view exceptions, change the title placeholder to value, prevent click to copy when editing, prevent sshKey and note from creating linked field, add delete folder message and make the button red, add a custom item for identity so that there arent 4 different fields for the name, add the remove field button, create the codeql thing and fix some stuff so that clientwarden would work with the official Bitwarden servers.
Crypto Docs Currently Im working on the Wiki, but after that, Ill work on v1.1.0 and the security stuff for v1.0.0. There really isn’t much so say here, bc its mostly just adding more stuff so docs.
AutoFill Unlock Window So while waiting to get the Apple Developer License for the App Group Setup and Code Signing Setup, I decided to work on AutoLock Support for v1.1.0 and the tiny AutoFill unlock window. I also tried to add support for logging in via passkeys, until I realised that I can’t since I need the dev license and I need to add my app bundle name to my vaultwarden instance for it to work. I also implemented support for clientwarden to stay open in the background. The second screenshot is just a cool little failure bc I forgot to give it a liquid glass background.
Passkey + Biometric Support + Security Updates So I was talking to @/Darren and they told me that I shouldn’t store auth keys in plaintext. I didn’t think that storing the keys would be a big issue since you needed a master Password to use them, but I decided to be safe anyway and I stored them in Keychain. Currently I can’t really implement most of the Keychain stuff because I don’t have an Apple Developer License yet. I also implemented broken passkey login support and also broken biometric support. They are broken bc I can’t really use them without a dev license
Archive Support Ok, so Im still waiting for the Apple Developer License so until then I can’t implement a lot of the really good features. Currently I’ve just implemented Archive Support and some fixes like to Check for missing Websocket Events . Im going to be doing a full test soon, once I finish all the features for v1.1.0. I also added a networking page for the wiki.
Multi Select Support I added a multi-select support thing so that you can press shift and select all the items you want to delete, restore, perm delete, archive or un archive. I also made it so that there would be a biometric button on the autofill unlock window and I also made it shake when the password is incorrect, its kinda fun to just press unlock 100 times to see it shake. Next, Im going to add animation and add support for device unlock.
Drag and Drop Support Usually if I want to implement a new feature, I would ask Claude how I would do it and what APIs I should use, note that Im not just vibe coding everything, Im just asking it how to do smth. This time tho, I decided not to do that and to directly look at Apple Docs, and it was pretty helpful. I was able to figure out how to implement more animations and figure out how to implement drag and drop support which was kinda hard but I was able to implement it. I also fixed a folder bug and did some stuff for the wiki.
Autofill Support Ok, so it took me a while to figure out how to implement Autofill support. I dont have the Apple Dev License yet, so unfortunatly I couldn’t test it and the only thing I could do is see compiler errors and fix them. So the way it works, is that it has a notification thing, and the extension notifies the vault app, asking for all the logins that match the website, it then puts the website in the keychain so that the app can access it and then the app checks the keychain, writes the result to the same keychain and notifies the extension. I also made this cool screenshots of it infront of a really cool bg and it looks sooo cool.
Adding Tests Since I wanted to revamp the old crypto stuff to support Argon2ID, I decided to create some tests to know if I’ve implemented it correctly or if I mess smth up. It took me waaay too long to figure this out. I had to fix a lot of stuff like adding a fake Clipboard, Storage and UI Bridge just so that I could link the backend, but in the end it was worth it.
Bug Fixes + Linux UI Ok, so I added an easter egg (see if you can find it), and I also switched to the list type Nav Panel which I had implemented but stashed before. I decided to restore it because it looked better and was a bit more organised, code-wise, and I thought it would help remove the shadows to fix light mode. I also had to change the folder button to glass and I also did a bit of work on the wiki. I decided to restart with the Windows UI, and I was planning on having a NavPanel, ItemsPanel and SidePanel with GenericItem’s which could perform the role of the TOTP Field, Text Field, Password Field, etc. However, I couldn’t do that bc WinUI isn’t declaritive like SwiftUI so I had to either create a bunch of xaml files and types, or just hide and show elements. Now that I think of it, I could’ve also populated it via C++, but I already moved on to the Linux side. For Linux, I was thinking of using QT with a catppuccin theme, since I’m very very bad at making color palette’s and stuff and the palette is pretty important. Anyway, after battling with QT with QML to work on MacOS and to even configure, bc it couldn’t find the deps from Conan, I was finally able to get it to work. I’m going to start working on the NavPanel tmrw. For now, Im going to have to develop the Linux UI on Mac, but after I finish the UI, ill move onto linux to finish it off.
Linux + Android Support I was able to do a ton of work for the past few days. I was working on Linux Support in Rust using Iced but it was pretty difficult to use to look good since it didn’t have any native nav panel elements and required me to make my own. So I decided to go to the Android side. Working with Android Kotlin was a bit difficult at first, but then it became much much easier. It was kinda annoying that I have to import literally everything, including the conversion things. By the end of the day, my imports were basically half the file. Either way, I decided to work on the Nav Screen first, and then the Items Panel which went pretty well. I think it turned out pretty well, but if you have any feedback, share it in the comments.
Android Support So I decided to work mainly on Android UI Support for now and then move onto Iced on Linux. I was able to work on the Details Screen as well as finish the Items Screen and fix some main stuff for the Nav Screen like adding Folder support and stuff. I also started work on getting the Android UI to compile on CMake and it looks like its going to be way harder than I thought it would be initially. Tbh it looks like Apple’s XCode Swift UI combo is generally the best, since they have a declarative style UI and things are pretty easy to Implement. With Windows, its XAML which wouldn’t fit in my situation, and for Android its almost perfect, except gradle is a pain and there a hundred types of everything, like the IconButton , Button , FilledTonalButton , TextButton , etc, and those are just the ones I learnt rn. Unlike Android, SwiftUI just has one type of button which can do everything which is pretty good for beginners and advanced ppl. And the best part, Swift UI can have negative padding, which is genuinaly PEAK!
Android UI - Details Screen I was able to implement the Password History Screen as well as the Reprompt UI and the Clientwarden Image class so that I can use an Image, Icon or App Resource. I still need to add a progress bar to the Attachment Item, Add callbacks for the top bar, add multi select support (tbh i dont really know how Im going to implement this) and do the rest of the stuff from the readme. I do want to focus more on the Mac OS side as well, bc I want to support Golden Gate and add a few features. The Main features that need to be implemented are the Sign Up support, Offline Vault support, and a ton more. If you want to help with the project, dm me at @CT5 on slack.
Finished Android UI So I was able to finally finish off the Android UI, and I was able to finish it off dramatically faster than I spent on the Mac OS UI. Mainly because, with the Mac OS UI, I had to spend a lot more time on the architecture and I had to revamp the Vault itself. My favorite part about making the UI is the About Screen, where I can hide tons of really cool effects and easter egg. If you download the Android App and go to Settings and about, you will see an App Icon which if you click 3 times, will spin around, kinda like the chrome easter egg.
Mac OS 27 Support + Tests I recently switched to Mac OS 27 Public Beta, which turned out to a very bad idea, as I hated the new icons and especially the new lighter glass. I was hoping that when MacOS 27 actually releases it would be fixed. Well, it released, and it wasn’t fixed. So I had to fix the UI for MacOS 27 and it was kinda pending anyway since it was sorta against Apple’s UI guidelines, but it looked amazing. The new one doesnt look as good, but its ok. Ill be fixing it in the days to come. I’m also working on more tests, specifically for the network part, since the network part is an important part of the vault.
New Bitwarden Fields (Passport, Drivers License, Bank Account) So I was just looking at the vault.json in ClientWarden to check something, and I noticed that the data field was missing, which was pretty weird since Bitwarden or VaultWarden will not accept or respond with a json without a data field. When I looked closer, they had also added new fields like passport , bankAccount and driversLicense which means they added new Item Types. These Item Types aren’t supported yet, but I might as well implement them so that Clientwarden supports them early. Right now, you can create and see the new Item Types, but I havent implemented support to view or edit these new types.
Bug Fixes + Code Cleanup + Documentation Since I didn’t really have much to do, I decided to prepare my app for release. Currently there are quite a few things wrong with Clientwarden. First, it has tons of bugs, and the code is sorta messy, and the architecture is also kinda borked. The whole point of the past revamp was to prevent a God Class like last time where Vault held pretty much everything. Its much better now, but its far from perfect. This time, Im actually going to make a whole style guide and an architecture plan/guide which should be good. After that, I can actually implement the new architecture and then fix the remaining bugs. Tomorrow, ill probably do a more in depth test of the app and then fix them and repeat before actually trying to re-architecture.
Vault Re-Architecturing (again) So I again noticed a few bugs like last time, and had a think about the Vault itself. I noticed that its getting kinda complicated and things are getting intertwined and there are funcs that arent used, and func of which I dont even know what they do. So unlike last time, where I just asked claude how to structure things, I decided to do some proper professional re-archtecturing. I already had an overall plan on how things were going to be structured, but it was pretty hard. The doc format I decided to use was ARC42 which is a guide on how to make a proper software architecture doc. I did skip a few things, but those werent really relevant in my case so thats fine. I also decided to make a style guide since things were getting kinda messy. I havent fully finished the style guide yet, but its a start and I really need to get this new vault finished before Stardance ends. If you want to look at the doc, its on my GitHub Wiki and its pretty straightforward and extensive. It did take me quite a while to think of everything in depth, so I will be spending a ton more time since software architecturing is pretty difficult.
Vault Re-Architecturing - Part 2 So I started working on the architecture and it was pretty difficult. I was able to add the crypto, netowrk, orchestrator, profile, runtime, settings, sync and versioning. So currently, I’ve decieded to expose only the orchestrator, settings and versioning because those are the only essential features that the UI requires, and exposing any more would re-create a God Class. Essentially, this time I decided to abstract it enough so that it would work with 1Pass and Bitwarden as a guide so that it would be abstract enough, even though I’m probably never going to support another password manager API. One thing I didn’t account for was the fact that BitWarden has an Organisation thing where the Organisation has its own keys and stuff, which pretty much requires me to re-architecture it again. Im probably not going to implement the organisation thing any time soon, so I should be fine for now. I’m hoping to finish with the structure today and start on the implementations tmrw.
Finishing off the New Architecture So I was able to finish off the Architecture Implementations and add a few more classes, like the Thread and Utils files. I also added a ton of comments (one per func & one per class/struct) as per the style guidelines that I wrote. Writing the comments took me waaay too long, since some funcs were pretty generic and I couldnt think of what comment to put for that func. I still have a ton more to do, like the Generic Item Stuff which is really really confusing and I havent even gotten to that part yet. After all that, I need to start on the BitWarden Vendor stuff and then integrate all that into the UI Bridge which shouldnt be too hard.
BitWarden Vendor Architecture - Part 1 Now that I’ve completed the Generic Base classes and stuff, I decided to work on the Vendor stuff. The main goal of the Architecturing is to make the architecture loose enough to work with BitWarden and 1Password, since if I focused solely on BitWarden again, it would have ended up being less abstract and I wanted it to be as abstract as possible without complicating things too much. Anyway, so I was able to finish off the crypto class and get started on the network class which pretty good progress. I did think of some additional ways to make it abstract, like making the UI call the Network class to get a list of all the URLs needed. Im hoping to get all the vendor classes finished by the end of next week and then start fixing the UI and UI Bridge in the following week.
BitWarden Vendor Architecture - Part 2 So I was able to finish off the BitWarden Network part which was somewhat hard, but it was just mainly repetitive stuff. I also got started on the BitWarden Runtime which wasnt too hard, although its sorta difficult to wrap your head around. After I finish off the runtime, I should be able to get started on the orchestrator and sync and versioning parts. For the Bitwarden Network I decided to integrate some stuff from the previous orchestrator that was wouldve been better to have in the Network and the same thing with Runtime as well.
BitWarden Vendor Architecture - Part 3 Making the orchestrator is pretty difficult because tying everything together is soo difficult, especially with the attachment stuff. BitWarden has some weird concepts on how it works. When creating an item and pushing it to the server, the server generates the id for you and sends the whole cipher back. However, if the network request fails halfway through, then it can create it online, without giving you the id. There are 3 solutions to this. One, is to just re-push, which creates a duplicate. Another way to fix this, is to leave it and fail, which is not a good idea. The best way to combat this situation, is to pull the items from the server, and find the one that was created by comparing the key from the local and remote vaults. The issue, is that sometimes, there is no key, so we have to rely on comparing the fields alone, which isnt the best, but its the only way. This is pretty difficult to think of on the spot and to resolve quickly, so thats why it took me so long. The other issue, is that I’ve faced a roadblock. I didnt think of attachments when designing the runtime class, so I have to add more funcs to help with offline attachments. Another issue, is that the runtime class is getting kinda messy now, since there are like 5 of the same type of funcs so I have to clean that up too. And then, I have the largest issue that I have to fix. Syncing. Syncing is a pretty weird concept on BitWarden. If you update an item offline, you dont change the revision Date, the version changes it. However, if the server’s item was changed as well, then it gets complicated because you need to handle it yourself. The first thing you can do, is to merge the individual fields, like if the name was changed on the server, and the username was changed on the client, then merge both. However if the name was changed on the server and the client, then you can create a new item with (conflict X) and then push that. All this is pretty complicated, and its probably going to get even more complicated soon.
BitWarden Vendor Architecture - Part 4 I forgot to devlog today, so consider this 8h and 30mins and add 30mins to the next devlog. I finally finished Orchestrator which took waaaay too much time (almost 5 days) and I had to fix my plan a bit as well because of the roadblocks. Finishing off the rest of it was pretty easy and starting on the Sync class was much easier due to the massive amount of time it took for me to think of a solution to the syncing issue in the midst of the Orchestrator issues. Ill be posting a Sync finished devlog soon, probably tmrw, so stay tuned!
BitWarden Vendor Architecture - Part 5 I kinda hoped that Sync would be easier but its pretty much as hard as Orchestrator, despite looking at the sync logic before hand and having to do less. I also rushed a ton of the stuff, so I need to have another look over the whole codebase and add comments and stuff before I continue again. I also need to handle all the todos and stuff. Tomorrow Im going to work on a lot of the bugs and errors with the runtime, sync and orchestrator because I did rush a lot of it....
|
1792504296.8145175
|
1793109096.8145175
|
|
138
|
Note taking by @shravs | Stardance
|
shravs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Note taking by @shravs | Stardance
|
1792536830.956367
|
1793141630.956367
|
|
139
|
AI by @AK47 | Stardance
|
AK47
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AI by @AK47 | Stardance
|
1792655371.731503
|
1793260171.731503
|
|
140
|
TablissNG by @BookCatKid | Stardance
|
BookCatKid
|
0
|
3.35
|
0
|
[]
|
[{"post_id": 3239, "ts": "2026 [{"post_id": 3239, "ts": "2026-06-06T02:12:45Z", "hours": 1.1469, "text": "New release again :) The last release had some major issues (they weren’t that big but whatever) and I had to fix all of those and release a new version 1.7.1. Pretty much just some translation, backgrounds, and trello fixes to make sure that everyone has the best experience. PS: Rate my extension on the stores please! Changelog chore: remove useless translations key and perfect french translation ( 46d4c8f ) Update ko.json (#159) ( 4821b37 ) chore: version 1.7.1 ( 91488e1 ) feat(trello): Labels form and bug fixes (#158) ( 37a5dfa )"}, {"post_id": 1980, "ts": "2026-06-04T07:37:25Z", "hours": 1.5314, "text": "New Release! FINALLY released a new version, its been a really long time, and I feel really bad for it but live happens I guess. I do have to release a hotfix tomorrow though because there are two major bugs in this release 😭. Check out v1.7.0! Changelog: feat(trello): Labels form and bug fixes (#158) ( 37a5dfa ) fix: respect sortOrder during auto-rotation, not just manual navigation ( aeae311 ) chore: huge deps bump ( a027585 ) fix: correctly pass pnpm version to store publish workflow ( 70e9c69 ) chore: version 1.7.0! ( 206a6bf )"}, {"post_id": 93, "ts": "2026-05-31T18:01:53Z", "hours": 0.6767, "text": "First TablissNG Devlog of stardance! I’m super excited to getting back to working on TablissNG, its been a while, I’ve been super busy unfortunately. Since the last devlog in flavortown, I haven’t done much, but I just recently fixed a few tiny bugs and updated the CHANGELOG so the we are ready for release ASAP."}]...
|
Title: TablissNG by @BookCatKid | Stardance
Devlo Title: TablissNG by @BookCatKid | Stardance
Devlogs:
First TablissNG Devlog of stardance! I’m super excited to getting back to working on TablissNG, its been a while, I’ve been super busy unfortunately. Since the last devlog in flavortown, I haven’t done much, but I just recently fixed a few tiny bugs and updated the CHANGELOG so the we are ready for release ASAP.
New Release! FINALLY released a new version, its been a really long time, and I feel really bad for it but live happens I guess. I do have to release a hotfix tomorrow though because there are two major bugs in this release 😭. Check out v1.7.0! Changelog: feat(trello): Labels form and bug fixes (#158) ( 37a5dfa ) fix: respect sortOrder during auto-rotation, not just manual navigation ( aeae311 ) chore: huge deps bump ( a027585 ) fix: correctly pass pnpm version to store publish workflow ( 70e9c69 ) chore: version 1.7.0! ( 206a6bf )
New release again :) The last release had some major issues (they weren’t that big but whatever) and I had to fix all of those and release a new version 1.7.1. Pretty much just some translation, backgrounds, and trello fixes to make sure that everyone has the best experience. PS: Rate my extension on the stores please! Changelog chore: remove useless translations key and perfect french translation ( 46d4c8f ) Update ko.json (#159) ( 4821b37 ) chore: version 1.7.1 ( 91488e1 ) feat(trello): Labels form and bug fixes (#158) ( 37a5dfa )...
|
1792421407.045668
|
1793026207.045668
|
|
141
|
Untitled project by @lino | Stardance
|
lino
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @lino | Stardance
|
1792709372.0567842
|
1793314172.0567842
|
|
142
|
testing by @clofour | Stardance
|
clofour
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: testing by @clofour | Stardance
|
1792590677.4653811
|
1793195477.4653811
|
|
143
|
Big Brother by @kingvon | Stardance
|
kingvon
|
0
|
36.51
|
0
|
[]
|
[{"post_id": 13765, "ts": "202 [{"post_id": 13765, "ts": "2026-06-22T15:49:11Z", "hours": 1.0486, "text": "Status Update in Detection so i have added other statuses in detections, which are: resolved , investigating , fase positive and i made a dropdown button component to update the status, making it was lowk creative lmao i didnt think i would be pull that off"}, {"post_id": 13717, "ts": "2026-06-22T14:14:06Z", "hours": 1.2025, "text": "Noise Filtering in Process Collector so i already had this but it was a bit stupid so i improved it, its still stupid but less stupid lol __ so right now it has bigger and more lists of stuff to ignore and it also checks for parent-child relation like kitty -> zsh and other terminals opening a shell cuz thats common, and it also ignores the processes fired by kernel for small things, and many other stuff, you check a list of stuff it ignores in lilbro/internal/collectors/processes/filter.go __ umm i dont have anyting to show as its a filtering a function i implement and wtf i am supposed to show, so have a look at this snapperd process lol"}, {"post_id": 13180, "ts": "2026-06-21T15:57:20Z", "hours": 1.1108, "text": "Containerization buzz word lmao basically i updated the docker compose files and made everything easily spin up with docker compose and that was like 20m of work, the rest was a fight between me vs pnpm security features and pyscopg2 building lmao"}, {"post_id": 13138, "ts": "2026-06-21T14:18:43Z", "hours": 0.7856, "text": "Standardized Context Fields and Timestamps so the way these two things were really messy lol in process info i had the go struct PascalCase context fields and in auth info i had snake_case context fields so i made snake_case the standard way __ and all the timestamps were timezone-naive which was really bad and there were conflicts in places, so i made all the columns timezone aware and migrated the existing tables to timestampz columns and now in frontend i am converting it to local timezone in the screenshot you can see two timestamp, one is UTC and the other is IST because i am converting it to local timezone on frontend instead of handling that stuff on backend, cuz well the agents could be hosted on any system across the globe note: the second timestamp is old, dont assume its same time just different timezones"}, {"post_id": 13052, "ts": "2026-06-21T10:42:27Z", "hours": 4.8544, "text": "Entire Rule Engine and Detection Pipeline lol big update, lemme go in chronological order what i did Bug fixes so i fixed a bug in SSH Pipeline where it was trying to send an event for EVERY journal ingestion which is not what i want because not every sshd journal log is important, so i added a check where if the log isnt about password failed or accepted then it wont ignore it. __ i also added Rule Name column in detection table which i forgot to add. Rule Engine setup so in this “setup” i made the database table and seeded it with 2 rules manually so i can make the detection functions first. ofc the two rules were the Sus Process match type rule and SSH Bruteforce threshold type rule. __ the detection engine is just the previous hardcoded one but now works with database variables, it still has the same the group by checking for threshold based rules, and for match rules i made the input be command seperated for example the values to be matched with can be nc, netcat, ncat, nmap Rule CRUD Endpoints created 5 endpoints on backend GET /rules/ - lists all rules POST /rules/ - creates rule PATCH - /rules/id - update a rule DELETE - /rules/id - delete a rule PATCH - /rules/id/toggle - toggle on a rule, small thing so made a seperate endpoint Dashboard created pages: /rules - shows rules table /rules/new - creates new rules Pending things: /rules/id page on dashboard, will do that later with rule updating feature Next: probably more types of events or config improvement, not decided."}, {"post_id": 11414, "ts": "2026-06-18T17:54:58Z", "hours": 1.8, "text": "SSH Auth Log Pipeline damn it was easier than i thought so i made the complete SSH authentication failure and success events pipeline __ what happens is the lil bro (agent) reads the systemd journal logs (yes it only supports this for now T__T) by executing the command journalctl -f -u sshd -o json --since now which basically makes it run the journalctl like tail command so it streams out the logs only when they are ingested. __ the logs are in JSON format which then gets is handled by Auth Collector in agent, which has parser functions for password failure and success then its just the normal event pipeline (create event -> send to queue -> worker sends the event to backend) after that it is displayed on dashboard next threshold based rules (first hardcoded, then proper rule table and stuff)"}, {"post_id": 10753, "ts": "2026-06-17T17:24:07Z", "hours": 3.4436, "text": "Detections lol this was fun too the entire detection pipeline so basically i started Detections work to complete the SOC pipeline (agent -> events -> detections) and since i have no rule engine setup yet so i hardcoded a Sus Process rule in detection function it bascially checks events within a time window of 30 seconds and checks their name for sus process names (which is just an array for now) and the detection function runs on a Background Scheduler every 30 seconds in backend (not agent, i dont want) and after that it stores the detection in the Detections table which stores things like: Rule Name, Triggered Events, Context, Status, etc and the end it is displayed beautifully (i love this so much T___T) on the dashboard thingys made Backend: Detection model, schemas, etc /detections/ - gives list of all detections /detections/{id} - gives the specific detection Dashboard: /detections - shows the all the detections in a table, needs more stuff like filter /detections/[id] - shows detection detail (looks REALLY good) Next see the obvious next step is a rule system to store detection rules but i wont do that, see i am planning to add 2 types of rules just like all the SOC, they are: directing matching rules and threshold based rules and i will build both at once but there is nothing yet which can be used with threshold based rules, and i dont want to edit the rule system again and again so i am planning to make authentication based events first and then work on rules, then process events can be tested with direct matching rules and authentication events can be tested with threshold based rules like SSH Brute force attack"}, {"post_id": 9987, "ts": "2026-06-16T14:57:39Z", "hours": 1.0742, "text": "Per-event info so i added a Sheet component from shadcn, which shows all the info of event like context and all the stuff not much just this, and uhhh it was a pain yeah every frontend thing is a pain."}, {"post_id": 8890, "ts": "2026-06-14T20:06:31Z", "hours": 0.8458, "text": "More Details in Process Event yeah just the title, not much tonight as i have to study so before this it was just PID and Name of process, which is useless, so i made it store this instead: type ProcessInfo struct { PID int PPID int Name string CmdLine string User string Cwd string CreateTime string } and i made the event table in dashboard show only first 2 fields in context and just say “+x more” at the end. next will be a sheet component to show the events in detail"}, {"post_id": 8343, "ts": "2026-06-13T21:25:40Z", "hours": 2.2133, "text": "Process Collector and Event Feed I’ve been waiting for this lol this is was so fun cuz i was locked the hell in okay so hear me out so in agent i made a very basic process collector which has 2 maps and every 10 seconds it updates the currProcesses map and compares it with prevProcesses the resulting differences are the process created/terminated. basic stuff. and then after that it creates an event struct and uses the event.Emit() function which just adds the event to a queue (go channel), and another function RunEventWorker() just has a loop which runs till events queue have events in them, and calls the api.SendEvent() function with the event, and that api function is very dynamic cuz the structure of event payload itself is very dynamic so all types of events can be sent from that small function and the coolest part about this whole pipeline is that it follows best practice of code, each function does only one thing, the collector just collects and emits the event, the event function only adds event to queue, then event worker runs api function with those events, everything is so organised!!! and the feed is semi-live, it just polls every 10 seconds. i REALLY had fun coding this lmao i love go :3 next: probably more processes related events or logs"}, {"post_id": 7373, "ts": "2026-06-12T09:10:49Z", "hours": 5.0419, "text": "Events endpoints and display problem i faced wow this was a pain T___T so basically when i started working on the backend to receive events from lilbro i planned something like this lil bro -> gets logs -> normalizes and understands it -> sends to backend -> dashboard displays it and i created the neccessary endpoints and database tables schemas what not bruh and halfway through i realized: “damn what about logs??” and it snapped. i realized i wasted like 2 hours on this cuz this system was absolutely trash and not afforadable on resources wise cuz we cant shove a whole detection engine in agent, and we gotta think about it from analyst side too cuz they gonna see logs for investigations and cant just depends on pre-build event types better system so then i decided to go with this kinda system: agent will see logs -> normalizes them -> sends to backend with logs and events in this kinda structure: { \"id\" : 1 , \"host\" : { \"id\" : \"\" , \"hostname\" : \"\" }, \"log\" : { \"source\" : \"\" , \"raw\" : \"\" , \"ingested_at\" : \"\" }, \"event_type\" : \"\" , \"context\" :{}, \"created_at\" : \"\" } , this would allow the backend to store the events and also the logs related, it also allows saving events with logs cuz not every event is made from a log and i think this is a nice system, cuz now we can show logs, events, and have a detection engine in backend to create alerts based on rules so to build this i created: Logs table, stores logs Events table, stores events with log ids /events/ - global event feed POST /agents/id/event - endpoint for agents to send events and on the dashboard side i have made /events which displays all events from all hosts in a table, it also has a filter for selecting hosts and/or event types, and also a limit. next next i will be working on sending events from lil bro"}, {"post_id": 5085, "ts": "2026-06-08T19:29:37Z", "hours": 1.5992, "text": "Agents details page so added /agents/[id] in dashboard, which required the same in backend too so i created the /{id} route in backend annd did the SQL magic to get the data, and also moved the schemas into their own folder cuz it was looking hella messy. i am using basic cards in displaying agents data, the top cards are mock data for now but soon i will addd real data in them, currently it looks like this."}, {"post_id": 4846, "ts": "2026-06-08T11:39:46Z", "hours": 1.3797, "text": "Agents Table so i made /agents and it displays the online agents in a nice table! i used the shadcn table component to make that, it fetches /agents/ on backend every 10 seconds and gets the data ofc handling with the goat tanstack query. one stupid thing i encountered was the fact that i was not handling the agent status in backend properly, once it turned online it forever stays online so i went to work on that first and found out that its lowk not a good idea to update and store the online/offline status on database, better way would be to just use last_seen and check if the agent’s last heartbeat was more than 2 minutes ago, if thats true just make the json data display “offline” in /agents endpoint, ez. i will ofc add more status types so i will handle it in a better way, but thats in future. and one more stupid thing i came across, and boy call me an idiot cuz i was PULLING my hair trying to figure out why the table wont update even after the backend endpoint is giving correct status, i thought so many things like cache and shit 😭️ and after like 20 minutes i saw that instead of refetch_interval: 10000 which is 10 seconds, i accidently made a typo and set it to 100000 which is 100 seconds 😭️ well it works now, and works good. next: event storage setup probably?"}, {"post_id": 4395, "ts": "2026-06-07T18:31:31Z", "hours": 1.0978, "text": "Counting Agents so time to show real data on dashboard first i installed tanstack cuz i am not going to fetch everywhere the same data, tanstack query will fetch, cache, store, refetch and handle all that, its a server state management lib. so using tanstack i created the neccessary functions for it to query the server and created the dashboard card component which will display the number of agent. i am also using shadcn skeleton to show the loading part. here’s how the cards look next: agent table"}, {"post_id": 4217, "ts": "2026-06-07T13:31:38Z", "hours": 3.1961, "text": "Woah hella changes Dashboard shell: first version so i made this as first version, took a lot of time cuz i am super trash in frontend, like SUPER trash and i didnt wanted to use AI on it. so after more than a whole hour i completed the first version. it was so hard to make the collapsing thingy work because the style will always mess up and wont go properly inside when clicked on collapsed button. after a shit ton of effort it looked okay and was done. the first image is how the first version looked Dashboard shell: final version after showing my friend and he gave it 2/10, and it trigged my seeking perfection self 💔️ and friend suggested tweakcn for shadcn colors and told me to use sidebar 8 of shadcn sidebar (i didnt even know sidebars existed in shadcn lmao) so i used that and hella time on that too cuz it was still complicated a bit, shadcn gave so many files i was lowk confused which type of nav to use for what things, but at the end it worked and looks beautiful and better! second image is the current one! Other minor changes added cors and stuff in backend so it allows request from dashboard, its just localhost for now but will have to find a permanent solution to that next thing i will do is display the lil bros info"}, {"post_id": 1391, "ts": "2026-06-03T12:16:57Z", "hours": 1.1761, "text": "heartbeats 💓 now the lil bro (agent) can send heartbeats! wow so i am new to go and just discovering the beautiful package based folder structure, makes a lot of sense! so i made a function to send api request to, a function to construct heartbeat by getting system info and UUID is passed from GetConfig() function, and a function to get sys info which includes hostname, os name, and kernel version at first i thought of adding os version instead but getting os version was kinda a pain so i just switched it to kernel version, might add os version later image 1: heartbeats being sent image 2: data from postgres, you can see the registered_at vs last_seen (which gets updated from heartbeats)"}, {"post_id": 952, "ts": "2026-06-02T18:35:42Z", "hours": 1.0694, "text": "GO GO LIL BRO making the lil bro (agent) with go! so i setup the go environment, i am actually a beginner in go lol i am using this project as an excuse to learn go :3 so i wrote some basic code in main.go to get started, and made internals/config.go which has 3 functions EnsureConfig() , CreateConfig() , and GetConfig() , when the code runs it checks with ensure function and creates new config if not found in ~/.config/lilbro/config.json . and Get config is just get config lol, using simple json marshalling with go the screenshot shows the config file that got saved"}, {"post_id": 771, "ts": "2026-06-02T13:09:57Z", "hours": 1.1258, "text": "Heartbeats on backend! so the lilbros (agents) will send heartbeats every few minutes and to handle that i first made a /register endpoint where the agents will first register and then start sending hearbeats but then thought that agents will also restart and i will have to treat their registration attempt as heartbeat, so there a thin line between /register and /heartbeat so i just merged them into /heartbeat lol so now agent generates a UUID locally and sends it along side other metadata about the system to backend, and backend checks if the agent exists then it just updates the last_seen in database and other metadata and if it doesnt then it creates a new agent, simple as hell again, dont have much to show right now as no UI lol"}, {"post_id": 438, "ts": "2026-06-01T20:54:14Z", "hours": 0.7908, "text": "Switched to SQLAlchemy from psycopg hi i am back did it because i started working on /agents/registration endpoint but the psycopg.connect(…) bla bla looked hella weird everywhere so i just ragequit and installed SQLAlchemy, then made the models (only agent table for now) and setup a simple function get_db() to get a quick db session, fixed my problem ezzz not using alembic rn tho, will do in future i dont have anything to show so i will just show this ig?"}, {"post_id": 398, "ts": "2026-06-01T19:41:40Z", "hours": 1.6497, "text": "HIIIIII, first dev log! so i started working on the docker setup first so i can spin up a postgres container, so i wrote a docker compose file, also had some problems cuz postgres-18 wouldnt take the /var/lib/bla/bla path, that was a small issue tho fixed that quick. then i started working on the connection part so i used psycopg on python backend to connect to my pgsql container after that i had to make tables, which took the most time lmao cuz it was hard to decide how should i do it, first i thought i should use SQLAlchemy and the whole database migration setup but that felt too much for now, so i went the usual way using psycopg and decided to create tables using CREATE TABLE IF NOT EXISTS , even with that my dumb ahh spent time making sure if i wrote the init_db() function the best way lmao, but at the end it worked nice and created the table after that i just setup fastapi and created / endpoint which just returns “hello fellas :3”"}]...
|
Title: Big Brother by @kingvon | Stardance
Devlog Title: Big Brother by @kingvon | Stardance
Devlogs:
HIIIIII, first dev log! so i started working on the docker setup first so i can spin up a postgres container, so i wrote a docker compose file, also had some problems cuz postgres-18 wouldnt take the /var/lib/bla/bla path, that was a small issue tho fixed that quick. then i started working on the connection part so i used psycopg on python backend to connect to my pgsql container after that i had to make tables, which took the most time lmao cuz it was hard to decide how should i do it, first i thought i should use SQLAlchemy and the whole database migration setup but that felt too much for now, so i went the usual way using psycopg and decided to create tables using CREATE TABLE IF NOT EXISTS , even with that my dumb ahh spent time making sure if i wrote the init_db() function the best way lmao, but at the end it worked nice and created the table after that i just setup fastapi and created / endpoint which just returns “hello fellas :3”
Switched to SQLAlchemy from psycopg hi i am back did it because i started working on /agents/registration endpoint but the psycopg.connect(…) bla bla looked hella weird everywhere so i just ragequit and installed SQLAlchemy, then made the models (only agent table for now) and setup a simple function get_db() to get a quick db session, fixed my problem ezzz not using alembic rn tho, will do in future i dont have anything to show so i will just show this ig?
Heartbeats on backend! so the lilbros (agents) will send heartbeats every few minutes and to handle that i first made a /register endpoint where the agents will first register and then start sending hearbeats but then thought that agents will also restart and i will have to treat their registration attempt as heartbeat, so there a thin line between /register and /heartbeat so i just merged them into /heartbeat lol so now agent generates a UUID locally and sends it along side other metadata about the system to backend, and backend checks if the agent exists then it just updates the last_seen in database and other metadata and if it doesnt then it creates a new agent, simple as hell again, dont have much to show right now as no UI lol
GO GO LIL BRO making the lil bro (agent) with go! so i setup the go environment, i am actually a beginner in go lol i am using this project as an excuse to learn go :3 so i wrote some basic code in main.go to get started, and made internals/config.go which has 3 functions EnsureConfig() , CreateConfig() , and GetConfig() , when the code runs it checks with ensure function and creates new config if not found in ~/.config/lilbro/config.json . and Get config is just get config lol, using simple json marshalling with go the screenshot shows the config file that got saved
heartbeats 💓 now the lil bro (agent) can send heartbeats! wow so i am new to go and just discovering the beautiful package based folder structure, makes a lot of sense! so i made a function to send api request to, a function to construct heartbeat by getting system info and UUID is passed from GetConfig() function, and a function to get sys info which includes hostname, os name, and kernel version at first i thought of adding os version instead but getting os version was kinda a pain so i just switched it to kernel version, might add os version later image 1: heartbeats being sent image 2: data from postgres, you can see the registered_at vs last_seen (which gets updated from heartbeats)
Woah hella changes Dashboard shell: first version so i made this as first version, took a lot of time cuz i am super trash in frontend, like SUPER trash and i didnt wanted to use AI on it. so after more than a whole hour i completed the first version. it was so hard to make the collapsing thingy work because the style will always mess up and wont go properly inside when clicked on collapsed button. after a shit ton of effort it looked okay and was done. the first image is how the first version looked Dashboard shell: final version after showing my friend and he gave it 2/10, and it trigged my seeking perfection self 💔️ and friend suggested tweakcn for shadcn colors and told me to use sidebar 8 of shadcn sidebar (i didnt even know sidebars existed in shadcn lmao) so i used that and hella time on that too cuz it was still complicated a bit, shadcn gave so many files i was lowk confused which type of nav to use for what things, but at the end it worked and looks beautiful and better! second image is the current one! Other minor changes added cors and stuff in backend so it allows request from dashboard, its just localhost for now but will have to find a permanent solution to that next thing i will do is display the lil bros info
Counting Agents so time to show real data on dashboard first i installed tanstack cuz i am not going to fetch everywhere the same data, tanstack query will fetch, cache, store, refetch and handle all that, its a server state management lib. so using tanstack i created the neccessary functions for it to query the server and created the dashboard card component which will display the number of agent. i am also using shadcn skeleton to show the loading part. here’s how the cards look next: agent table
Agents Table so i made /agents and it displays the online agents in a nice table! i used the shadcn table component to make that, it fetches /agents/ on backend every 10 seconds and gets the data ofc handling with the goat tanstack query. one stupid thing i encountered was the fact that i was not handling the agent status in backend properly, once it turned online it forever stays online so i went to work on that first and found out that its lowk not a good idea to update and store the online/offline status on database, better way would be to just use last_seen and check if the agent’s last heartbeat was more than 2 minutes ago, if thats true just make the json data display “offline” in /agents endpoint, ez. i will ofc add more status types so i will handle it in a better way, but thats in future. and one more stupid thing i came across, and boy call me an idiot cuz i was PULLING my hair trying to figure out why the table wont update even after the backend endpoint is giving correct status, i thought so many things like cache and shit 😭️ and after like 20 minutes i saw that instead of refetch_interval: 10000 which is 10 seconds, i accidently made a typo and set it to 100000 which is 100 seconds 😭️ well it works now, and works good. next: event storage setup probably?
Agents details page so added /agents/[id] in dashboard, which required the same in backend too so i created the /{id} route in backend annd did the SQL magic to get the data, and also moved the schemas into their own folder cuz it was looking hella messy. i am using basic cards in displaying agents data, the top cards are mock data for now but soon i will addd real data in them, currently it looks like this.
Events endpoints and display problem i faced wow this was a pain T___T so basically when i started working on the backend to receive events from lilbro i planned something like this lil bro -> gets logs -> normalizes and understands it -> sends to backend -> dashboard displays it and i created the neccessary endpoints and database tables schemas what not bruh and halfway through i realized: “damn what about logs??” and it snapped. i realized i wasted like 2 hours on this cuz this system was absolutely trash and not afforadable on resources wise cuz we cant shove a whole detection engine in agent, and we gotta think about it from analyst side too cuz they gonna see logs for investigations and cant just depends on pre-build event types better system so then i decided to go with this kinda system: agent will see logs -> normalizes them -> sends to backend with logs and events in this kinda structure: { "id" : 1 , "host" : { "id" : "" , "hostname" : "" }, "log" : { "source" : "" , "raw" : "" , "ingested_at" : "" }, "event_type" : "" , "context" :{}, "created_at" : "" } , this would allow the backend to store the events and also the logs related, it also allows saving events with logs cuz not every event is made from a log and i think this is a nice system, cuz now we can show logs, events, and have a detection engine in backend to create alerts based on rules so to build this i created: Logs table, stores logs Events table, stores events with log ids /events/ - global event feed POST /agents/id/event - endpoint for agents to send events and on the dashboard side i have made /events which displays all events from all hosts in a table, it also has a filter for selecting hosts and/or event types, and also a limit. next next i will be working on sending events from lil bro
Process Collector and Event Feed I’ve been waiting for this lol this is was so fun cuz i was locked the hell in okay so hear me out so in agent i made a very basic process collector which has 2 maps and every 10 seconds it updates the currProcesses map and compares it with prevProcesses the resulting differences are the process created/terminated. basic stuff. and then after that it creates an event struct and uses the event.Emit() function which just adds the event to a queue (go channel), and another function RunEventWorker() just has a loop which runs till events queue have events in them, and calls the api.SendEvent() function with the event, and that api function is very dynamic cuz the structure of event payload itself is very dynamic so all types of events can be sent from that small function and the coolest part about this whole pipeline is that it follows best practice of code, each function does only one thing, the collector just collects and emits the event, the event function only adds event to queue, then event worker runs api function with those events, everything is so organised!!! and the feed is semi-live, it just polls every 10 seconds. i REALLY had fun coding this lmao i love go :3 next: probably more processes related events or logs
More Details in Process Event yeah just the title, not much tonight as i have to study so before this it was just PID and Name of process, which is useless, so i made it store this instead: type ProcessInfo struct { PID int PPID int Name string CmdLine string User string Cwd string CreateTime string } and i made the event table in dashboard show only first 2 fields in context and just say “+x more” at the end. next will be a sheet component to show the events in detail
Per-event info so i added a Sheet component from shadcn, which shows all the info of event like context and all the stuff not much just this, and uhhh it was a pain yeah every frontend thing is a pain.
Detections lol this was fun too the entire detection pipeline so basically i started Detections work to complete the SOC pipeline (agent -> events -> detections) and since i have no rule engine setup yet so i hardcoded a Sus Process rule in detection function it bascially checks events within a time window of 30 seconds and checks their name for sus process names (which is just an array for now) and the detection function runs on a Background Scheduler every 30 seconds in backend (not agent, i dont want) and after that it stores the detection in the Detections table which stores things like: Rule Name, Triggered Events, Context, Status, etc and the end it is displayed beautifully (i love this so much T___T) on the dashboard thingys made Backend: Detection model, schemas, etc /detections/ - gives list of all detections /detections/{id} - gives the specific detection Dashboard: /detections - shows the all the detections in a table, needs more stuff like filter /detections/[id] - shows detection detail (looks REALLY good) Next see the obvious next step is a rule system to store detection rules but i wont do that, see i am planning to add 2 types of rules just like all the SOC, they are: directing matching rules and threshold based rules and i will build both at once but there is nothing yet which can be used with threshold based rules, and i dont want to edit the rule system again and again so i am planning to make authentication based events first and then work on rules, then process events can be tested with direct matching rules and authentication events can be tested with threshold based rules like SSH Brute force attack
SSH Auth Log Pipeline damn it was easier than i thought so i made the complete SSH authentication failure and success events pipeline __ what happens is the lil bro (agent) reads the systemd journal logs (yes it only supports this for now T__T) by executing the command journalctl -f -u sshd -o json --since now which basically makes it run the journalctl like tail command so it streams out the logs only when they are ingested. __ the logs are in JSON format which then gets is handled by Auth Collector in agent, which has parser functions for password failure and success then its just the normal event pipeline (create event -> send to queue -> worker sends the event to backend) after that it is displayed on dashboard next threshold based rules (first hardcoded, then proper rule table and stuff)
Entire Rule Engine and Detection Pipeline lol big update, lemme go in chronological order what i did Bug fixes so i fixed a bug in SSH Pipeline where it was trying to send an event for EVERY journal ingestion which is not what i want because not every sshd journal log is important, so i added a check where if the log isnt about password failed or accepted then it wont ignore it. __ i also added Rule Name column in detection table which i forgot to add. Rule Engine setup so in this “setup” i made the database table and seeded it with 2 rules manually so i can make the detection functions first. ofc the two rules were the Sus Process match type rule and SSH Bruteforce threshold type rule. __ the detection engine is just the previous hardcoded one but now works with database variables, it still has the same the group by checking for threshold based rules, and for match rules i made the input be command seperated for example the values to be matched with can be nc, netcat, ncat, nmap Rule CRUD Endpoints created 5 endpoints on backend GET /rules/ - lists all rules POST /rules/ - creates rule PATCH - /rules/id - update a rule DELETE - /rules/id - delete a rule PATCH - /rules/id/toggle - toggle on a rule, small thing so made a seperate endpoint Dashboard created pages: /rules - shows rules table /rules/new - creates new rules Pending things: /rules/id page on dashboard, will do that later with rule updating feature Next: probably more types of events or config improvement, not decided.
Standardized Context Fields and Timestamps so the way these two things were really messy lol in process info i had the go struct PascalCase context fields and in auth info i had snake_case context fields so i made snake_case the standard way __ and all the timestamps were timezone-naive which was really bad and there were conflicts in places, so i made all the columns timezone aware and migrated the existing tables to timestampz columns and now in frontend i am converting it to local timezone in the screenshot you can see two timestamp, one is UTC and the other is IST because i am converting it to local timezone on frontend instead of handling that stuff on backend, cuz well the agents could be hosted on any system across the globe note: the second timestamp is old, dont assume its same time just different timezones
Containerization buzz word lmao basically i updated the docker compose files and made everything easily spin up with docker compose and that was like 20m of work, the rest was a fight between me vs pnpm security features and pyscopg2 building lmao
Noise Filtering in Process Collector so i already had this but it was a bit stupid so i improved it, its still stupid but less stupid lol __ so right now it has bigger and more lists of stuff to ignore and it also checks for parent-child relation like kitty -> zsh and other terminals opening a shell cuz thats common, and it also ignores the processes fired by kernel for small things, and many other stuff, you check a list of stuff it ignores in lilbro/internal/collectors/processes/filter.go __ umm i dont have anyting to show as its a filtering a function i implement and wtf i am supposed to show, so have a look at this snapperd process lol
Status Update in Detection so i have added other statuses in detections, which are: resolved , investigating , fase positive and i made a dropdown button component to update the status, making it was lowk creative lmao i didnt think i would be pull that off...
|
1792641237.9594507
|
1793246037.9594507
|
|
145
|
Melon Labs by @melon | Stardance
|
melon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Melon Labs by @melon | Stardance
|
1792637322.3022501
|
1793242122.3022501
|
|
146
|
Untitled project by @sabhya_aggarwal | Stardance
|
sabhya_aggarwal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sabhya_aggarwal | Star Title: Untitled project by @sabhya_aggarwal | Stardance...
|
1792680812.502513
|
1793285612.502513
|
|
147
|
DELETED by @Vimthusiast | Stardance
|
Vimthusiast
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: DELETED by @Vimthusiast | Stardance
|
1792630326.5279934
|
1793235126.5279934
|
|
148
|
WarioWare Game by @Willz | Stardance
|
Willz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @Willz | Stardance
|
1792774442.4294558
|
1793379242.4294558
|
|
149
|
Untitled by @Vimthusiast | Stardance
|
Vimthusiast
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Vimthusiast | Stardance
|
1792810074.7056103
|
1793414874.7056103
|
|
150
|
Untitled by @Vimthusiast | Stardance
|
Vimthusiast
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Vimthusiast | Stardance
|
1792760074.942968
|
1793364874.942968
|
|
151
|
Untitled by @Vimthusiast | Stardance
|
Vimthusiast
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Vimthusiast | Stardance
|
1792716889.2220933
|
1793321689.2220933
|
|
152
|
Untitled project by @sinismylastname | Stardance
|
sinismylastname
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sinismylastname | Star Title: Untitled project by @sinismylastname | Stardance...
|
1792752602.576735
|
1793616602.576735
|
|
155
|
1 by @joshi | Stardance
|
joshi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 1 by @joshi | Stardance
|
1792784985.3477209
|
1793389785.3477209
|
|
156
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792896741.6564639
|
1793760741.6564639
|
|
158
|
My Portfolio by @imu | Stardance
|
imu
|
0
|
2.46
|
0
|
[]
|
[{"post_id": 271, "ts": "2026- [{"post_id": 271, "ts": "2026-06-01T14:25:20Z", "hours": 1.8289, "text": "updated but under devlopmnt"}, {"post_id": 163, "ts": "2026-06-01T01:14:07Z", "hours": 0.6294, "text": "Project: My portfolio Current Phase: Prototype Imu — Portfolio Website Personal portfolio website presenting My skills and projects Overview This repository contains the source code for my portfolio website. The site includes: This project is built with HTML and CSS This project is my personal portfolio website Made meme style dedicated pages containner Responsive design Tech stack HTML5 CSS3 Vanilla JavaScript (I love vanilla ice cream :)) Repository structure index.html | Main projects page style.css | Stylesheet Thankyou for reading :)"}]...
|
Title: My Portfolio by @imu | Stardance
Devlogs:
Title: My Portfolio by @imu | Stardance
Devlogs:
Project: My portfolio Current Phase: Prototype Imu — Portfolio Website Personal portfolio website presenting My skills and projects Overview This repository contains the source code for my portfolio website. The site includes: This project is built with HTML and CSS This project is my personal portfolio website Made meme style dedicated pages containner Responsive design Tech stack HTML5 CSS3 Vanilla JavaScript (I love vanilla ice cream :)) Repository structure index.html | Main projects page style.css | Stylesheet Thankyou for reading :)
updated but under devlopmnt...
|
1792903882.313452
|
1793767882.313452
|
|
159
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1791824916.3918858
|
1792688916.3918858
|
|
160
|
Personal site by @keyaan | Stardance
|
keyaan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal site by @keyaan | Stardance
|
1792784850.010117
|
1793389650.010117
|
|
161
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792882151.5759895
|
1793746151.5759895
|
|
162
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792882400.4073832
|
1793746400.4073832
|
|
163
|
Untitled project by @danielzanthosh | Stardance
|
danielzanthosh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @danielzanthosh | Stard Title: Untitled project by @danielzanthosh | Stardance...
|
1792622875.3525996
|
1793227675.3525996
|
|
164
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1791820935.3134098
|
1792684935.3134098
|
|
165
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792893069.6563153
|
1793757069.6563153
|