stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

CT5

@CT5

Joined May 31st, 2026

  • 53Devlogs
  • 4Projects
  • 1Ships
  • 19Votes
WinDurango and Clientwarden Dev. C++ is peak.
Open comments for this post

8h 43m 58s logged

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.

0
0
26
Open comments for this post

8h 15m 53s logged

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.

0
0
42
Open comments for this post

9h 19m 53s logged

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.

0
0
39
Open comments for this post

9h 21m 41s logged

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.

0
0
21
Open comments for this post

8h 18m 21s logged

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.

0
0
24
Open comments for this post

8h 5m 46s logged

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.

0
0
25
Open comments for this post

8h 21m 30s logged

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.

0
0
27
Open comments for this post

8h 22m 18s logged

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.

0
0
30
Open comments for this post

8h 3m 1s logged

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.

0
0
21
Open comments for this post

8h 39m 1s logged

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.

0
0
32
Open comments for this post

8h 40m 37s logged

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.

0
0
57
Open comments for this post

9h 8m 56s logged

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!

0
0
50
Open comments for this post

8h 58m 59s logged

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.

0
0
29
Open comments for this post

6h 10m 56s logged

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.

0
0
55
Open comments for this post

5h 42m 44s logged

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.

0
0
21
Open comments for this post

5h 12m 19s logged

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.

0
0
25
Ship

I helped make WinDurango with @Rodrigo_Todescatto2010 and @dexrn. Unfortunatly, Im not able to work on WinDurango anymore, because I switched to MacOS so Im going to have to ship it now. If I do get a windows computer later on, I will continue this project. I mainly did WinRT stuff and got a few games working in WD. Currently, the only version of Minecraft LCE that works is 1.2.0.0. You will need a dumped Xbox One game to test it out.

  • 6 devlogs
  • 23h
  • 19.52x multiplier
  • 447 Stardust
Try project → See source code →
Open comments for this post

2h 48m 34s logged

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.

1
0
282
Open comments for this post

4h 45m 12s logged

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.

2
0
123
Open comments for this post

2h 9m 2s logged

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.

0
0
41
Loading more…

Followers

Loading…