···16161717- Cooler name (and kawaii logo)
1818- Color scheme options and hue slider (defaults to Witchsky orange)
1919-- Posts are called Skeets (may let you choose in the future)
1919+- You can change
2020- Choose between sharing witchsky.app or bsky.app links
2121- Embed player works with [stream.place](https://stream.place/) links!
2222-- Open skeets in PDSls and original pages of bridged posts
2323-- You can redraft skeets
2222+- Open posts in PDSls and original pages of bridged posts
2323+- You can redraft posts
2424- Better defaults (alt text required 😉 autoplay off 🫨)
2525- More unique repost icons
2626- Can download videos
···3333These are all available as options in a sub-page of the app's settings.
34343535- Toggle go.bsky.app link proxying for analytics
3636-- Toggle to see skeets in quotes through blocks and detachments
3636+- Toggle to see posts in quotes through blocks and detachments
3737- Toggle for buttons to show original fedi posts and in PDSls
3838- Toggle to trust your own preferred verifiers (and to operate as one yourself)
3939- Toggle to change Constellation instance for custom features
···4242#### Tweaks
43434444- Toggle to turn non-bsky.social handles into clickable links
4545-- Toggle to combine reskeets in horizontal carousels
4545+- Toggle to combine reposts in horizontal carousels
4646- Toggle the following feed fallback to the discover feed
4747- Toggle displaying images in higher quality
4848- Toggle to only show a single tab if only one feed is pinned
4949-- Toggle to prevent others from getting notified when you interact with their reskeets
4949+- Toggle to prevent others from getting notified when you interact with their reposts
5050- Toggle similar account recommendations
5151- Toggle to make all user avatars square (like labelers)
5252- Toggle for more square-ish UI (still slightly rounded)
···5858You can completely disable the visiblity of all metrics individually, including the number of:
59596060- likes
6161-- reskeets
6161+- reposts
6262- quotes
6363- saves
6464- replies
···68686969## Upcoming or wishful features
70707171-- Better OpenGraph support for sharing profiles & skeets (including videos & fixing quotes)
7171+- Better OpenGraph support for sharing profiles & posts (including videos & fixing quotes)
7272- Selecting a custom AppView
7373- Seeing past blocks in threads (the nuclear block in reply chains)
7474- Configure the location used to determine regional labelers
···115115116116> Witchsky is a community fork, and we'd love to merge your PR!
117117118118-As a rule of thumb, the best features for Witchsky are those that have a disproportionately positive impact on the user experience compared to the maintenance overhead. Unlike some open source projects, since Witchsky is a soft fork, any features (patches) we add on top of upstream social-app need to be maintained. For example, a change to the way skeets 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.
118118+As a rule of thumb, the best features for Witchsky are those that have a disproportionately positive impact on the user experience compared to the maintenance overhead. Unlike some open source projects, since Witchsky is a soft fork, any features (patches) we add on top of upstream social-app 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.
119119120120For this reason, only features that require changing only a small amount of code from upstream should be considered.
121121
+3-3
src/locale/i18n.ts
···13131414import {sanitizeAppLanguageSetting} from '#/locale/helpers'
1515import {AppLanguage} from '#/locale/languages'
1616-import {applySkeetReplacements} from '#/locale/linguiHook'
1616+import {applyPostReplacements} from '#/locale/linguiHook'
1717import {messages as messagesAn} from '#/locale/locales/an/messages'
1818import {messages as messagesAst} from '#/locale/locales/ast/messages'
1919import {messages as messagesCa} from '#/locale/locales/ca/messages'
···126126 break
127127 }
128128 case AppLanguage.en_GB: {
129129- const transformedMsgs = applySkeetReplacements(messagesEn_GB, locale)
129129+ const transformedMsgs = applyPostReplacements(messagesEn_GB, locale)
130130 i18n.loadAndActivate({locale, messages: transformedMsgs})
131131 await Promise.all([
132132 import('@formatjs/intl-pluralrules/locale-data/en'),
···424424 break
425425 }
426426 default: {
427427- const transformedMsgs = applySkeetReplacements(messagesEn, locale)
427427+ const transformedMsgs = applyPostReplacements(messagesEn, locale)
428428 i18n.loadAndActivate({locale, messages: transformedMsgs})
429429 break
430430 }