Witchsky banner

Witchsky

7 devlogs
71h 0m 46s

A fork of Bluesky’s official client with features for power-users, Witchsky adds a bunch of nice-to-haves that are missing from the project upstream, like the ability to redraft posts, set a theme, hide numerical metrics, and much more.

This project uses AI

VSCode/GitHub Copilot was used for code completion

Demo Repository

Loading README...

xan.lol

even more Witchsky updates!
the biggest thing right now was me working to relocate all the settings. I spent hours trying to get a new icon for the Runes settings to work (in Inkscape, Figma, and random websites) and even longer finding the perfect spot for every individual option. some other people contributed changes, like a Material You color theme on all devices, Google Sans on Android, a conversion from yarn to pnpm, and a quick fix to improve performance after a recent merge I did with upstream.
Meanwhile, I fixed up the PDS badge code so the filler icon wouldn’t pop up behind transparent favicons, finally fixed a bug that had existed for months which caused feeds and labelers to suddenly disappear, made the client put Witchsky Web App in the ‘via’ field for people posting from there (and Witchsky for Android, iPhone on those respective platforms), later added options to hide the visibility of that field/omit it from your own posts, and added a few other requested features (mostly just fixing linting, reordering a ton of stuff, and more refactoring).

Attachment
Attachment
Attachment
0
xan.lol

hi everyone. many updates to Witchsky recently (and made progress on the mobile app! that’ll probably be a later ship, after I get some bugs sorted out with the web version).

  • images with transparent backgrounds can now be uploaded without getting black put behind them! (at least if they’re small enough). thanks to another contributor, image uploads in png webp and other formats are permitted.
  • that same contributor ported over custom appview support from another bluesky client fork, Blacksky. I then added support for changing accounts without having to reauthenticate each time, logging in with DIDs (including did:web), even when your current AppView is down (it also used to be hardcoded to Bluesky’s).
  • added a pet badge, figuring out the exact dimensions and everything else with the other badge implementation, to totally recreate for a new selfLabel. I then moved other badge code into the same file as all the other ones.
  • I accidentally leaked the build credentials/keystore for Android (the build failed, and I shared a screenshot of the terminal output…) I easily made a new one, but whew! made other significant changes to the web build system, as at least that worked.
  • added a feature to let you choose your own favicon fetching service (as an attempt to stop sending so many queries to all the PDSs you might scroll by, which would in turn absolutely fill up the console with CORS and other errors.)
  • added another feature, this one inspired by TOKIMEKI, another Bluesky client. it allows you to make a thread if a post goes over the character count, extracting the first word for the first post, and then numbering all of them.
  • worked around many OAuth issues, especially with custom PDS implementations that try to strictly stay to the ATProto spec. made multiple attempts at finding the right scopes to work with it, but sadly ended up with the biggest ones possible, meaning that when signing in people are greeted with a scary screen saying the app wants permission to do anything it wants to their account!
  • made a new setting to change the PLC directory used in handle resolution cases, like on the login screen or for PDS badges. this was especially important as I’m pretty sure the servers that housed these were part of a bigger DDoS attack against Bluesky’s AppView.
  • finally, I merged all the changes from upstream again. there were some big merge conflicts but I handled all of them :3 now the app might be even more up to date than bsky.app!
  • oh, and FINALLY finally, I made it so that the favicon changes color depending on your color theme!
Attachment
Attachment
Attachment
Attachment
0
xan.lol

ok! I did work on Witchsky on and off for a few weeks. The main things are that you can now set a custom AppView DID and everything won’t break along with it (the addition of the new option/proxying)! made possible in a large part especially by another contributor who developed a better patch for @atproto/api then the one I had.

Also now have the option to set your own alt text prompt, along with a new default prompt and model for openrouter. (reminder: you might need to deposit $10 into an openrouter account for even free models to continually function. this should probably be added to a notice in the Runes settings.)

merged changes from upstream a few times. also got oauth working on web, making sure to clear out any mistakes in the build steps! (fixed an error in the console thru that effort. still a lot more to cover though!)

iOS PWA users will now have a much better time navigating, as the ui elements on top won’t be cut off by the system status bar. hopefully I can get money to put it on the app store soon though, as that might be a slightly better experience for users at this point!

Attachment
Attachment
0
xan.lol

ANOTHER DEVLOG AHHHH
I added better UI for picking themes! and also an option to intercept requests to the image CDN (normally supplied by Bluesky’s AppView-set CDN) with your own!

Attachment
Attachment
1

Comments

sakshisuman25
sakshisuman25 about 2 months ago

nice

xan.lol

New Witchsky updates! ok still no mobile app 🫤 I need money or someone else to publish it. but I did get a lot of bug fixes in and PRs merged! The app now has support for generating alt text using AI from your own OpenRouter API key! This might make media more accessible for everyone involved. (Also I had previously set the default setting for alt text input to be required, so this might make people who were annoyed with that default a bit happier, and not feel the need to disable that setting.)

Attachment
Attachment
0
xan.lol

Hello! Today’s devlog is about a couple new features and how I solved some conflicts (wow that took a while). Firstly, I fetched, pulled, and merged from upstream for the latest changes, so now the Live Now feature supports bluecast.app (like twitter spaces but on the AT Protocol)!
There was a large update upstream to the analytics system that touched tons of files, so I had to fix a lot of merge conflicts there. Sadly, this update meant that the client would have to go through the removal of “Gates,” which this fork made available as toggles in the Experiments settings page. One of those gates allowed a user to disable the new ‘composer prompt’ which appeared only over the Following and Discover feeds, so with its removal, I added the code for my own toggle that stops it from loading in! (on by default)
Someone added support for post translations to go through another providers besides Google Translate, and just added Kagi Translate. (Kagi is a paid search engine that I use!) I then figured out how to add more ‘engines’/providers and spent a while trying to make it support a custom LibreTranslate instance.
A while ago someone asked to change the phrase that posts were called (‘skeets’) and for it to be adjustable by the user: https://tangled.org/jollywhoppers.com/witchsky.app/issues/11 and finally today, you can! By default they’re called posts again, like on the app upstream, but I added a prompt that lets you select from a list of some presets, or type your own singular/plural phrases to show up in the user interface! I also made it work without having to reload the webpage or close the app, so it’s a much nicer experience.

Attachment
Attachment
Attachment
Attachment
0
xan.lol

Witchsky is a version of Bluesky’s official client made for power-users, developers, and anyone who wants to have a cuter experience on the site! (btw bsky is totally open and based on a really cool protocol - check out atproto.com to learn more)
Lots of bug fixes and trying to keep the client up-to-date with upstream! As a soft-fork, any additions I make to the codebase might mean more work in the future to make it compatible with other’s changes.
I added support for YouTube embeds on both mobile and web, improved embeds for stream.place to only appear for actual streamable links, fixed the avatar and banners livestreaming badges (you can open up the full avatar now if on a profile!), and fixed a lot more (feeds and labels will no longer disappear randomly - sadly, this means that users can no longer set a custom AppView in the settings).
I commissioned an illustrator to make a kawaii logo for the client (accessible on web by appending ?kawaii=true to the URL!) and made it togglable in appearance settings so mobile users could also enjoy it :D.
I hope to add a lot more features to this client in the near future! The Bluesky team says a big update is coming to their platform next week, so I’m preparing to make a lot of changes.

Attachment
0