Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client

fix: drafting and live now bugs + readme update

xan.lol 22cd28e7 9a239e9e

verified
+9 -15
+3 -2
README.md
··· 53 53 - Toggle to make all user avatars square (like labelers) 54 54 - Toggle for more square-ish UI (still slightly rounded) 55 55 - Toggle to remove the composer prompt at the top of the Following & Discover feeds 56 + - Toggle between handle and DID in URLs and share links 56 57 - Change post translation provider (between Google, Kagi, Papago, and LibreTranslate) 58 + - Use an OpenRouter API key for generating image alt text when posting 57 59 58 60 #### Metrics 59 61 ··· 82 84 - [ ] Change followed accounts [on onboarding](https://github.com/blacksky-algorithms/blacksky.community/commit/e36ee43efb4999f070860d7f70122e45b28c1e2b) 83 85 - [ ] Join date & switch accounts in composer from a fork like [deer.aylac.top](https://github.com/ayla6/deer-social-test) 84 86 - [ ] Visual replies indicator like the [Firmament userstyle](https://witchsky.app/profile/did:plc:jwhxcrf5uvl3vyw7nurecgt5/post/3m4rr3vzmak2a) (and likes?) 85 - - [ ] Put DeerSettings into separate subpages 87 + - [ ] Put RunesSettings into separate subpages 86 88 - [ ] After subpages for options, add [Outlinks page](https://witchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) & 87 89 - [ ] ShareMenuItems.tsx, ShareMenuItems.web.tsx 88 90 - [ ] For profile meatball button, Open profile in PDSls & Open bridged OG fedi account page ··· 94 96 - [ ] Collapse labels past a customizable number (from the same labeler?) into a labeler clip "(+)" 95 97 - [ ] Submit releases to the Google Play Store and iOS App Store 96 98 - [ ] Move from [Cloudflare Pages](https://pages.cloudflare.com/) to [wisp.place](https://wisp.place/) (needs serverless for embeds) 97 - - [ ] Toggle between handle and DID in share links 98 99 - [ ] Move TOS and privacy policy to Jollywhoppers website 99 100 - [ ] Ignore `!no-unauthenticated` labels 100 101 - [ ] Material 3 Expressive theming on Android (Liquid **ass on iOS)
+4 -4
src/components/live/LiveStatusDialog.tsx
··· 80 80 }, [navigation, profile.handle, control]) 81 81 82 82 const handlePressViewAvatar = useCallback(() => { 83 - if (onPressViewAvatar) { 84 - control.close(onPressViewAvatar) 85 - } 83 + control.close(onPressViewAvatar) 86 84 }, [control, onPressViewAvatar]) 87 85 88 86 return ( ··· 95 93 profile={profile} 96 94 embed={embed} 97 95 onPressOpenProfile={onPressOpenProfile} 98 - onPressViewAvatar={handlePressViewAvatar} 96 + {...(onPressViewAvatar 97 + ? {onPressViewAvatar: handlePressViewAvatar} 98 + : {})} 99 99 /> 100 100 <Dialog.Close /> 101 101 </Dialog.ScrollableInner>
+2 -9
src/view/com/composer/text-input/TextInput.web.tsx
··· 242 242 } 243 243 }, 244 244 }, 245 - content: generateJSON(textToHtml(richTextToHTML(richtext)), extensions, { 245 + content: generateJSON(richTextToHTML(richtext), extensions, { 246 246 preserveWhitespace: 'full', 247 247 }), 248 248 autofocus: autoFocus ? 'end' : null, ··· 455 455 .replace(/</g, '&lt;') 456 456 .replace(/>/g, '&gt;') 457 457 .replace(/"/g, '&quot;') 458 + .replace(/\n/g, '<br/>') 458 459 } 459 460 460 461 function editorJsonToText( ··· 529 530 borderWidth: 2, 530 531 }, 531 532 }) 532 - 533 - function textToHtml(text: string): string { 534 - return text 535 - .replace(/&/g, '&amp;') 536 - .replace(/</g, '&lt;') 537 - .replace(/>/g, '&gt;') 538 - .replace(/\n/g, '<br>') 539 - } 540 533 541 534 function getImageOrVideoFromUri( 542 535 items: DataTransferItemList,