Welcome!
dnproto is an atproto PDS that I'm writing in C#. I'm going to start posting occasional updates to the project.
The project sources are currently hosted at GitHub -> https://github.com/threddyrex/dnproto
I host my main account using the software. As I encounter bugs (or missing features) I implement them.
Below are some updates from this week. ā¬ļø
Update 1: fixed a bug with video
Videos posted to my account were disappearing from the Bluesky CDN after two days.
I discovered that the dnproto firehose events referenced blobs differently than the Bluesky reference PDS. Specifically, posts were using "ref -> $link {}" format in the dag-cbor data, but Bluesky PDS would collapse that to "ref: cid" when sending the firehose events.
I chose the following general approach: in Json it's ok to represent the blob ref using the expanded format, but when converting to dag-cbor bytes, need to collapse that down. And vice-versa when going from dag-cbor back to Json.
I added a commit that points out where the fix was, with comments.
Update 2: new administrative dashboard
I didn't expect to be building an admin dashboard this week, but it just kinda happened.
The admin dashboard has a few pages:
Sessions - shows all logged-in sessions, including legacy, oauth, and admin
Statistics - shows stats about connections to the PDS
Passkeys - registering new passkeys
The stats page is especially useful in identifying who is connecting to the PDS.
Update 3: passkeys
I implemented the first half of passkeys. In the admin dashboard you can register new passkeys for use later.
Soon I'll add the second half - using the passkeys during login flows.
Update 4 (last minute!): fixing blob uploads for Leaflet
I was about to publish this post but then realized that I didn't have a logo set on the Leaflet publication. When I tried uploading a logo - it failed. š I had to slightly change how uploadBlob works.