A Witchsky fork that is groovy and NEVER glooby!! tenna.party

README.md

tenna.party app 📺🎤 (alpha) #

Hey, audience! This is the codebase for the tenna.party app, a fork of Witchsky, which itself is based on social.daniela.lol and prior Bluesky forks.

EVERYTHING IS WIP, SOME THINGS MAY NOT WORK OR MAY HAVE NOT BEEN IMPLEMENTED YET.

Get the app itself:

PLEASE NOTE THAT ANDROID SUPPORT IS NOT MY #1 PRIORITY RIGHT NOW AS I DO NOT OWN AN ANDROID OF MY OWN NOR EMULATE ONE BECAUSE I'M AN IPHONE PERSON

Improvements on Witchsky #

Fun:

  • Brand new settings Page: Settings -> Deltas
  • New fun self-badge system: Character + kin selector.
  • Enhanced composer Custom TID option (there's one in witchsky too but it's suffix only)
  • Option to enable Japan-exclusive logo (TODO: REMAKE THIS)

Moderation:

  • 200 max labeler limit (its way too much)
  • Ignore blocks for viewing groupchat messages
  • Bypass Bluesky !hide label and blocks on viewing lists

App:

  • Brought back AI prefs in our settings
  • Big warning on stuff that has to do with AI (too much work to remove)

Infra:

  • Native iOS via GitHub Actions (for sideloading)
  • Native Android APK via GitHub actions
  • Working Push Notifications on Android!
  • Own selfhosted push service at https://push.tenna.party (one computer in latvia)

TODO: Kris #

Development Resources #

This is a React Native application, written in the TypeScript programming language. It builds on the atproto TypeScript packages (like @atproto/api), which are also open source, but in a different git repository.

There is vestigial Go language source code (in ./bskyweb/), for a web service that returns the React Native Web application in the social app deployments. For Witchsky, the intended deployment is with a webserver that can serve static files, and reroute to index.html as needed. Witchsky is currently hosted on Cloudflare Pages. Maybe we will follow the same path.

The Build Instructions are a good place to get started with the app itself. If you use nix (and especially direnv) then flake.nix will get you a working environment for the web version of the app.

The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't need to understand AT Protocol to work with this application, but it can help. You may wish to reference resources linked in social-app. However, please don't harass the Bluesky team with issues or questions pertaining to Witchsky.

v is a fork of Witchsky, which itself is a fork of the official Bluesky client, social-app. They both encompass a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is app.bsky.*.

Contributions #

tenna.party is a community fork, and we'd love to merge your PR!

As a rule of thumb, the best features for tenna.party are those that have any positive impact on the user experience regardless of the maintenance overhead. Since tenna.party is a soft-ish fork, any features (patches) we add on top of Witchsky need to be maintained. For example, a change to the way posts are composed may be very invasive, touching lots of code across the codebase. If upstream refactors this component, we will need to rewrite this feature to be compatible or drop it from the client. Just go freestyle, I guess! But please DON'T add AI.

For this reason, only features that require changing only a small or medium amount of code from upstream should be considered.

Without an overriding motivation, opinionated features maybe should exist behind a toggle that is not enabled by default. This allows our client to cater to as many users as possible.

Guidelines #

  • Check for existing issues before filing a new one please.
  • Open an issue and give some time for discussion before submitting a PR.
    • This isn't strictly necessary, but the lead developers would love to give their thoughts and scope out your willingness to maintain the feature before you write it.
  • Stay away from PRs like...
    • Adding AI Slop / LLM text generation to posts
    • Changing "User" to "Tennaling."
    • Refactoring the codebase, e.g., to replace React Query with Redux Toolkit, etc.
  • Include a new toggle and preference for your feature.

If we don't merge your PR for whatever reason, you are welcome to fork and/or self-host:

Forking guidelines #

Just like Witchsky and social-app, you have our blessing 🪄✨ to fork this application! However, it's very important to make it clear to users when you're giving them a fork.

Please be sure to:

  • Change all branding in the repository and UI to clearly differentiate from Bluesky, Witchsky and tenna.party.
  • Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems.

Self hosting & personal builds #

Self hosting is great! It is our intention that tenna.party is easy to self host and build on your own. If you host your own instance of tenna.party, or make your own builds, please make some level of effort to clarify that it is not an "official" build or instance. This can be in the form of a different domain or branding, but can also be as simple as not advertising your hosted instance or builds as "official" releases.

Security disclosures #

If you discover any security issues with tenna.party (NOT WITCHSKY), please privately disclose them to kris.darkworld.download. If the issue pertains to infastructure, code, or systems outside the scope of tenna.party and Witchsky, please refer to the disclosure guidelines on social-app if it is hosted by Bluesky PBC. Otherwise, reference the security policy of that system as applicable ❤️

License (MIT) #

See ./LICENSE for the full license.

Bluesky Social PBC has committed to a software patent non-aggression pledge. For details see their original announcement.

P.S. #

We ❤️ you and all of the ways you support us. Thank you for making Witchsky & tenna.party so great! ^.^ :3