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

Clientwarden

  • 22 Devlogs
  • 87 Total hours

A nice, aestheticly appealing UI intended to replace the desktop Bitwarden Client which uses electron making it very inefficient. Clientwarden is created natively for each platform to be resource-efficient without using electron. Currently only Logins are clickable in the Clientwarden UI and only Username, Password's and Websites are able to be displayed.

Open comments for this post

3h 57m 7s logged

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.

0
0
0
Open comments for this post

6h 35m 46s logged

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.

0
0
13
Open comments for this post

9h 25m 22s logged

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

0
0
3
Open comments for this post

9h 12m 21s logged

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.

0
0
4
Open comments for this post

5h 29m 48s logged

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.

0
0
4
Open comments for this post

3h 34m 18s logged

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.

0
0
6
Open comments for this post

1h 40m 47s logged

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.

0
0
6
Open comments for this post

2h 48m 43s logged

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.

0
0
6
Open comments for this post

4h 16m 30s logged

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.

0
0
7
Open comments for this post

2h 10m 13s logged

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.

0
0
5
Open comments for this post

2h 43m 19s logged

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.

0
0
5
Open comments for this post

2h 37m 47s logged

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.

0
0
7
Open comments for this post

1h 30m 20s logged

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.

0
0
6
Open comments for this post

3h 57m 28s logged

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.

0
0
18
Open comments for this post

7h 7m 55s logged

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.

0
0
6
Open comments for this post

5h 5m 28s logged

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.

0
0
7
Open comments for this post

3h 30m 5s logged

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.

0
0
7
Open comments for this post

6h 2m 26s logged

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.

0
0
7
Open comments for this post

1h 27m 5s logged

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.

0
1
90
Open comments for this post

1h 8m 1s logged

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

0
0
6
Open comments for this post

1h 39m 39s logged

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.

0
0
16
Open comments for this post

1h 12m 31s logged

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.

1
0
127

Followers

Loading…