Bluesky app fork with some witchin' additions 💫

Actually call them skeets + readme update also one more default please & ChatEmptyPills

xan.lol 5cdd5bba e0f3a3c6

verified
+262 -263
+16 -17
README.md
··· 16 16 17 17 - Funner name (still love you tho bsky!) 18 18 - Nicer colors (kinda like gruvbox? not really) 19 - - We call them skeets (at least for English users) 20 - - Attempts to ignore `!no-unauthenticated` labels 19 + - Posts are called Skeets 21 20 - Share links to bitchsky.app or bsky.app 22 21 - Embed player works with [stream.place](https://stream.place/) links! 22 + - Open skeets in PDSls and original pages from bridged posts 23 + - Better defaults (alt text required 😉) 23 24 - No push notifications (may be added later) 24 25 - Kept as up-to-date as possible (sporadically unstable as a result) 25 26 ··· 28 29 These are all available as options in a sub-page of the app's settings. 29 30 30 31 - Toggle go.bsky.app link proxying for analytics 31 - - Toggle to see skeets in quotes through blocks and detachments (broken 💔) 32 + - Toggle to see skeets in quotes through blocks and detachments 32 33 - Toggle to trust your own preferred verifiers (and to operate as one yourself) 33 - - Toggle to disable the default app labeler 34 + - Toggle to disable the default app labeler(s) 34 35 35 36 #### Tweaks 36 37 ··· 41 42 - Toggle to only show a single tab if only one feed is pinned 42 43 - Toggle to prevent others from getting notified when you interact with their reskeets 43 44 - Toggle similar account recommendations 45 + - Toggle to make all user avatars square (like labelers) 44 46 45 47 #### Metrics 46 48 ··· 58 60 - Toggle to show feed context for debugging 59 61 - Toggle to hide the 'show latest' button 60 62 - Toggle to make reply button open thread from feeds 61 - - More may be available in developer mode 63 + - More may be available in developer mode? 62 64 - (Accessible by holding the version in the About settings screen) 63 65 64 66 ## Upcoming or wishful features ··· 82 84 - [ ] Automatic PDS detection like other social-app forks (fallback/email addresses to use bitchsky.social) 83 85 - [ ] Like of or repost of repost icons in notifications 84 86 - [ ] Change followed accounts [on onboarding](https://github.com/blacksky-algorithms/blacksky.community/commit/e36ee43efb4999f070860d7f70122e45b28c1e2b) 85 - - [ ] Change ChatEmptyPill strings for English locale 86 - - [ ] Pronouns+ from forks like [deer.aylac.top](https://github.com/ayla6/deer-social-test) 87 + - [ ] Join date & switch accounts from composer from a fork like [deer.aylac.top](https://github.com/ayla6/deer-social-test) 87 88 - [ ] Visual replies indicator like the [Firmament userstyle](https://bitchsky.app/profile/did:plc:jwhxcrf5uvl3vyw7nurecgt5/post/3m4rr3vzmak2a) (and likes?) 88 89 - [ ] Additional translation service providers + setting (Deepl, Kagi) 89 90 - [ ] Move Mutuals label to the follow button 90 - - [ ] Change defaults (alt text nation, link non-bsky handles, autoplay OFF, hide similar account recommendations) 91 + - [ ] Put DeerSettings into separate subpages 92 + - [ ] After subpages for options, add [Outlinks page](https://bitchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) & 93 + - [ ] ShareMenuItems.tsx, ShareMenuItems.web.tsx 94 + - [ ] For profile meatball button, Open profile in PDSls & Open bridged OG fedi account page 95 + - [ ] ProfileMenu.tsx 91 96 - [ ] Bitchsky PDS and .social site (list good songs containing 'bitch' in their titles) 92 97 93 - #### Bugs 94 - 95 - - [ ] Fix app crash on tapping profile header (./src/view/com/util/UserBanner.tsx) 96 - - [ ] Fix regression causing zooming in to break on image lightboxes 97 - 98 98 ### Even more wishful or far off 99 99 100 100 - [ ] Collapse labels past a customizable number (from the same labeler?) into a labeler clip "(+)" 101 101 - [ ] Submit releases to the Google Play Store and iOS App Store 102 - - [ ] Likes tab on profiles for other users 103 - - [ ] Move from GitHub to Tangled? 104 - - [ ] Experimental toggle between handle and DID in share links? 105 - - [ ] New fun language/locale(s) like Minecraft 102 + - [ ] Move from GitHub to Tangled (and Cloudflare Pages to wisp.place)? 103 + - [ ] Toggle between handle and DID in share links 106 104 - [ ] Move TOS and privacy policy to Jollywhoppers website? 105 + - [ ] Ignore `!no-unauthenticated` labels 107 106 - [ ] Rewrite ALF for M3 Expressive (with in-app color slider like red dwarf, for web?) 108 107 109 108 ## Development Resources
+10 -10
src/Navigation.tsx
··· 196 196 name="ModerationInteractionSettings" 197 197 getComponent={() => ModerationInteractionSettings} 198 198 options={{ 199 - title: title(msg`Post Interaction Settings`), 199 + title: title(msg`Skeet Interaction Settings`), 200 200 requireAuth: true, 201 201 }} 202 202 /> ··· 255 255 name="ProfileSearch" 256 256 getComponent={() => ProfileSearchScreen} 257 257 options={({route}) => ({ 258 - title: title(msg`Search @${route.params.name}'s posts`), 258 + title: title(msg`Search @${route.params.name}'s skeets`), 259 259 })} 260 260 /> 261 261 <Stack.Screen 262 262 name="PostThread" 263 263 getComponent={() => PostThreadScreen} 264 264 options={({route}) => ({ 265 - title: title(msg`Post by @${route.params.name}`), 265 + title: title(msg`Skeet by @${route.params.name}`), 266 266 })} 267 267 /> 268 268 <Stack.Screen 269 269 name="PostLikedBy" 270 270 getComponent={() => PostLikedByScreen} 271 271 options={({route}) => ({ 272 - title: title(msg`Post by @${route.params.name}`), 272 + title: title(msg`Skeet by @${route.params.name}`), 273 273 })} 274 274 /> 275 275 <Stack.Screen 276 276 name="PostRepostedBy" 277 277 getComponent={() => PostRepostedByScreen} 278 278 options={({route}) => ({ 279 - title: title(msg`Post by @${route.params.name}`), 279 + title: title(msg`Skeet by @${route.params.name}`), 280 280 })} 281 281 /> 282 282 <Stack.Screen 283 283 name="PostQuotes" 284 284 getComponent={() => PostQuotesScreen} 285 285 options={({route}) => ({ 286 - title: title(msg`Post by @${route.params.name}`), 286 + title: title(msg`Skeet by @${route.params.name}`), 287 287 })} 288 288 /> 289 289 <Stack.Screen ··· 466 466 name="RepostNotificationSettings" 467 467 getComponent={() => RepostNotificationSettingsScreen} 468 468 options={{ 469 - title: title(msg`Repost notifications`), 469 + title: title(msg`Reskeet notifications`), 470 470 requireAuth: true, 471 471 }} 472 472 /> ··· 482 482 name="LikesOnRepostsNotificationSettings" 483 483 getComponent={() => LikesOnRepostsNotificationSettingsScreen} 484 484 options={{ 485 - title: title(msg`Likes of your reposts notifications`), 485 + title: title(msg`Likes of your reskeets notifications`), 486 486 requireAuth: true, 487 487 }} 488 488 /> ··· 490 490 name="RepostsOnRepostsNotificationSettings" 491 491 getComponent={() => RepostsOnRepostsNotificationSettingsScreen} 492 492 options={{ 493 - title: title(msg`Reposts of your reposts notifications`), 493 + title: title(msg`Reskeets of your reskeets notifications`), 494 494 requireAuth: true, 495 495 }} 496 496 /> ··· 614 614 name="Bookmarks" 615 615 getComponent={() => BookmarksScreen} 616 616 options={{ 617 - title: title(msg`Saved Posts`), 617 + title: title(msg`Saved Skeets`), 618 618 requireAuth: true, 619 619 }} 620 620 />
+2 -2
src/components/Post/PostRepliedTo.tsx
··· 25 25 26 26 let label 27 27 if (isParentBlocked) { 28 - label = <Trans context="description">Replied to a blocked post</Trans> 28 + label = <Trans context="description">Replied to a blocked skeet</Trans> 29 29 } else if (isParentNotFound) { 30 - label = <Trans context="description">Replied to a post</Trans> 30 + label = <Trans context="description">Replied to a skeet</Trans> 31 31 } else if (parentAuthor) { 32 32 const did = 33 33 typeof parentAuthor === 'string' ? parentAuthor : parentAuthor.did
+4 -4
src/components/PostControls/BookmarkButton.tsx
··· 56 56 <toast.Outer> 57 57 <toast.Icon /> 58 58 <toast.Text> 59 - <Trans>Post saved</Trans> 59 + <Trans>Skeet saved</Trans> 60 60 </toast.Text> 61 61 {!disableUndo && ( 62 62 <toast.Action ··· 91 91 <toast.Outer> 92 92 <toast.Icon icon={TrashIcon} /> 93 93 <toast.Text> 94 - <Trans>Removed from saved posts</Trans> 94 + <Trans>Removed from saved skeets</Trans> 95 95 </toast.Text> 96 96 {!disableUndo && ( 97 97 <toast.Action ··· 125 125 big={big} 126 126 label={ 127 127 isBookmarked 128 - ? _(msg`Remove from saved posts`) 129 - : _(msg`Add to saved posts`) 128 + ? _(msg`Remove from saved skeets`) 129 + : _(msg`Add to saved skeets`) 130 130 } 131 131 onPress={onHandlePress} 132 132 hitSlop={hitSlop}>
+18 -18
src/components/PostControls/PostMenu/PostMenuItems.tsx
··· 189 189 const onDeletePost = () => { 190 190 deletePostMutate({uri: postUri}).then( 191 191 () => { 192 - Toast.show(_(msg({message: 'Post deleted', context: 'toast'}))) 192 + Toast.show(_(msg({message: 'Skeet deleted', context: 'toast'}))) 193 193 194 194 const route = getCurrentRoute(navigation.getState()) 195 195 if (route.name === 'PostThread') { ··· 209 209 }, 210 210 e => { 211 211 logger.error('Failed to delete post', {message: e}) 212 - Toast.show(_(msg`Failed to delete post, please try again`), 'xmark') 212 + Toast.show(_(msg`Failed to delete skeet, please try again`), 'xmark') 213 213 }, 214 214 ) 215 215 } ··· 318 318 }) 319 319 Toast.show( 320 320 isDetach 321 - ? _(msg`Quote post was successfully detached`) 322 - : _(msg`Quote post was re-attached`), 321 + ? _(msg`Quote skeet was successfully detached`) 322 + : _(msg`Quote skeet was re-attached`), 323 323 ) 324 324 } catch (e: any) { 325 325 Toast.show( ··· 581 581 testID="postDropdownCopyTextBtn" 582 582 label={_(msg`Copy post text`)} 583 583 onPress={onCopyPostText}> 584 - <Menu.ItemText>{_(msg`Copy post text`)}</Menu.ItemText> 584 + <Menu.ItemText>{_(msg`Copy skeet text`)}</Menu.ItemText> 585 585 <Menu.ItemIcon icon={ClipboardIcon} position="right" /> 586 586 </Menu.Item> 587 587 </> 588 588 ) : ( 589 589 <Menu.Item 590 590 testID="postDropdownSignInBtn" 591 - label={_(msg`Sign in to view post`)} 591 + label={_(msg`Sign in to view skeet`)} 592 592 onPress={onSignIn}> 593 - <Menu.ItemText>{_(msg`Sign in to view post`)}</Menu.ItemText> 593 + <Menu.ItemText>{_(msg`Sign in to view skeet`)}</Menu.ItemText> 594 594 <Menu.ItemIcon icon={Eye} position="right" /> 595 595 </Menu.Item> 596 596 )} ··· 673 673 label={ 674 674 isReply 675 675 ? _(msg`Hide reply for me`) 676 - : _(msg`Hide post for me`) 676 + : _(msg`Hide skeet for me`) 677 677 } 678 678 onPress={() => hidePromptControl.open()}> 679 679 <Menu.ItemText> 680 680 {isReply 681 681 ? _(msg`Hide reply for me`) 682 - : _(msg`Hide post for me`)} 682 + : _(msg`Hide skeet for me`)} 683 683 </Menu.ItemText> 684 684 <Menu.ItemIcon icon={EyeSlash} position="right" /> 685 685 </Menu.Item> ··· 781 781 782 782 <Menu.Item 783 783 testID="postDropdownReportBtn" 784 - label={_(msg`Report post`)} 784 + label={_(msg`Report skeet`)} 785 785 onPress={() => reportDialogControl.open()}> 786 - <Menu.ItemText>{_(msg`Report post`)}</Menu.ItemText> 786 + <Menu.ItemText>{_(msg`Report skeet`)}</Menu.ItemText> 787 787 <Menu.ItemIcon icon={Warning} position="right" /> 788 788 </Menu.Item> 789 789 </> ··· 814 814 testID="postDropdownDeleteBtn" 815 815 label={_(msg`Delete post`)} 816 816 onPress={() => deletePromptControl.open()}> 817 - <Menu.ItemText>{_(msg`Delete post`)}</Menu.ItemText> 817 + <Menu.ItemText>{_(msg`Delete skeet`)}</Menu.ItemText> 818 818 <Menu.ItemIcon icon={Trash} position="right" /> 819 819 </Menu.Item> 820 820 </> ··· 826 826 827 827 <Prompt.Basic 828 828 control={deletePromptControl} 829 - title={_(msg`Delete this post?`)} 829 + title={_(msg`Delete this skeet?`)} 830 830 description={_( 831 - msg`If you remove this post, you won't be able to recover it.`, 831 + msg`If you remove this skeet, you won't be able to recover it.`, 832 832 )} 833 833 onConfirm={onDeletePost} 834 834 confirmButtonCta={_(msg`Delete`)} ··· 837 837 838 838 <Prompt.Basic 839 839 control={hidePromptControl} 840 - title={isReply ? _(msg`Hide this reply?`) : _(msg`Hide this post?`)} 840 + title={isReply ? _(msg`Hide this reply?`) : _(msg`Hide this skeet?`)} 841 841 description={_( 842 - msg`This post will be hidden from feeds and threads. This cannot be undone.`, 842 + msg`This skeet will be hidden from feeds and threads. This cannot be undone.`, 843 843 )} 844 844 onConfirm={onHidePost} 845 845 confirmButtonCta={_(msg`Hide`)} ··· 862 862 863 863 <Prompt.Basic 864 864 control={quotePostDetachConfirmControl} 865 - title={_(msg`Detach quote post?`)} 865 + title={_(msg`Detach quote skeet?`)} 866 866 description={_( 867 - msg`This will remove your post from this quote post for all users, and replace it with a placeholder.`, 867 + msg`This will remove your skeet from this quote skeet for all users, and replace it with a placeholder.`, 868 868 )} 869 869 onConfirm={onToggleQuotePostAttachment} 870 870 confirmButtonCta={_(msg`Yes, detach`)}
+1 -1
src/components/PostControls/PostMenu/index.tsx
··· 61 61 return ( 62 62 <EventStopper onKeyDown={false}> 63 63 <Menu.Root control={lazyMenuControl}> 64 - <Menu.Trigger label={_(msg`Open post options menu`)}> 64 + <Menu.Trigger label={_(msg`Open skeet options menu`)}> 65 65 {({props}) => { 66 66 return ( 67 67 <PostControlButton
+10 -10
src/components/PostControls/RepostButton.tsx
··· 142 142 const onPressClose = useCallback(() => control.close(), [control]) 143 143 144 144 return ( 145 - <Dialog.ScrollableInner label={_(msg`Repost or quote post`)}> 145 + <Dialog.ScrollableInner label={_(msg`Reskeet or quote skeet`)}> 146 146 <View style={a.gap_xl}> 147 147 <View style={a.gap_xs}> 148 148 <Button 149 149 style={[a.justify_start, a.px_md, a.gap_sm]} 150 150 label={ 151 151 isReposted 152 - ? _(msg`Remove repost`) 153 - : _(msg({message: `Repost`, context: 'action'})) 152 + ? _(msg`Remove reskeet`) 153 + : _(msg({message: `Reskeet`, context: 'action'})) 154 154 } 155 155 onPress={onPressRepost} 156 156 size="large" ··· 159 159 <Repost size="lg" fill={t.palette.primary_500} /> 160 160 <Text style={[a.font_semi_bold, a.text_xl]}> 161 161 {isReposted ? ( 162 - <Trans>Remove repost</Trans> 162 + <Trans>Remove reskeet</Trans> 163 163 ) : ( 164 - <Trans context="action">Repost</Trans> 164 + <Trans context="action">Reskeet</Trans> 165 165 )} 166 166 </Text> 167 167 </Button> ··· 171 171 style={[a.justify_start, a.px_md, a.gap_sm]} 172 172 label={ 173 173 embeddingDisabled 174 - ? _(msg`Quote posts disabled`) 175 - : _(msg`Quote post`) 174 + ? _(msg`Quote skeets disabled`) 175 + : _(msg`Quote skeet`) 176 176 } 177 177 onPress={onPressQuote} 178 178 size="large" ··· 193 193 embeddingDisabled && t.atoms.text_contrast_low, 194 194 ]}> 195 195 {embeddingDisabled ? ( 196 - <Trans>Quote posts disabled</Trans> 196 + <Trans>Quote skeets disabled</Trans> 197 197 ) : ( 198 - <Trans>Quote post</Trans> 198 + <Trans>Quote skeet</Trans> 199 199 )} 200 200 </Text> 201 201 </Button> 202 202 </View> 203 203 <Button 204 - label={_(msg`Cancel quote post`)} 204 + label={_(msg`Cancel quote skeet`)} 205 205 onPress={onPressClose} 206 206 size="large" 207 207 color="secondary">
+9 -9
src/components/PostControls/RepostButton.web.tsx
··· 65 65 <Menu.Item 66 66 label={ 67 67 isReposted 68 - ? _(msg`Undo repost`) 69 - : _(msg({message: `Repost`, context: `action`})) 68 + ? _(msg`Undo reskeet`) 69 + : _(msg({message: `Reskeet`, context: `action`})) 70 70 } 71 71 testID="repostDropdownRepostBtn" 72 72 onPress={onRepost}> 73 73 <Menu.ItemText> 74 74 {isReposted 75 - ? _(msg`Undo repost`) 76 - : _(msg({message: `Repost`, context: `action`}))} 75 + ? _(msg`Undo reskeet`) 76 + : _(msg({message: `Reskeet`, context: `action`}))} 77 77 </Menu.ItemText> 78 78 <Menu.ItemIcon icon={Repost} position="right" /> 79 79 </Menu.Item> ··· 81 81 disabled={embeddingDisabled} 82 82 label={ 83 83 embeddingDisabled 84 - ? _(msg`Quote posts disabled`) 85 - : _(msg`Quote post`) 84 + ? _(msg`Quote skeets disabled`) 85 + : _(msg`Quote skeet`) 86 86 } 87 87 testID="repostDropdownQuoteBtn" 88 88 onPress={onQuote}> 89 89 <Menu.ItemText> 90 90 {embeddingDisabled 91 - ? _(msg`Quote posts disabled`) 92 - : _(msg`Quote post`)} 91 + ? _(msg`Quote skeets disabled`) 92 + : _(msg`Quote skeet`)} 93 93 </Menu.ItemText> 94 94 <Menu.ItemIcon icon={Quote} position="right" /> 95 95 </Menu.Item> ··· 101 101 onPress={() => requireAuth(() => {})} 102 102 active={isReposted} 103 103 activeColor={t.palette.positive_500} 104 - label={_(msg`Repost or quote post`)} 104 + label={_(msg`Reskeet or quote skeet`)} 105 105 big={big}> 106 106 <PostControlButtonIcon icon={Repost} /> 107 107 {typeof repostCount !== 'undefined' && repostCount > 0 && (
+1 -1
src/components/PostControls/ShareMenu/RecentChats.tsx
··· 118 118 return ( 119 119 <Button 120 120 onPress={onPress} 121 - label={_(msg`Send post to ${name}`)} 121 + label={_(msg`Send skeet to ${name}`)} 122 122 style={[ 123 123 a.flex_col, 124 124 {width: WIDTH},
+5 -5
src/components/PostControls/ShareMenu/ShareMenuItems.tsx
··· 157 157 label={_(msg`Open original post`)} 158 158 onPress={onOpenOriginalPost}> 159 159 <Menu.ItemText> 160 - <Trans>Open original post</Trans> 160 + <Trans>Open original skeet</Trans> 161 161 </Menu.ItemText> 162 162 <Menu.ItemIcon icon={ExternalIcon} position="right" /> 163 163 </Menu.Item> ··· 168 168 label={_(msg`Open post in PDSls`)} 169 169 onPress={onOpenPostInPdsls}> 170 170 <Menu.ItemText> 171 - <Trans>Open post in PDSls</Trans> 171 + <Trans>Open skeet in PDSls</Trans> 172 172 </Menu.ItemText> 173 173 <Menu.ItemIcon icon={ExternalIcon} position="right" /> 174 174 </Menu.Item> ··· 201 201 label={_(msg`Copy link to post`)} 202 202 onPress={onCopyLink}> 203 203 <Menu.ItemText> 204 - <Trans>Copy link to post</Trans> 204 + <Trans>Copy link to skeet</Trans> 205 205 </Menu.ItemText> 206 206 <Menu.ItemIcon icon={ChainLinkIcon} position="right" /> 207 207 </Menu.Item> ··· 223 223 <Admonition 224 224 type="warning" 225 225 style={[a.flex_1, a.border_0, a.p_0, a.bg_transparent]}> 226 - <Trans>This post is only visible to logged-in users.</Trans> 226 + <Trans>This skeet is only visible to logged-in users.</Trans> 227 227 </Admonition> 228 228 </Menu.ContainerItem> 229 229 </Menu.Group> ··· 236 236 label={_(msg`Share post at:// URI`)} 237 237 onPress={onShareATURI}> 238 238 <Menu.ItemText> 239 - <Trans>Share post at:// URI</Trans> 239 + <Trans>Share skeet at:// URI</Trans> 240 240 </Menu.ItemText> 241 241 <Menu.ItemIcon icon={ClipboardIcon} position="right" /> 242 242 </Menu.Item>
+6 -6
src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx
··· 112 112 label={_(msg`Copy link to post`)} 113 113 onPress={onCopyLink}> 114 114 <Menu.ItemText> 115 - <Trans>Copy link to post</Trans> 115 + <Trans>Copy link to skeet</Trans> 116 116 </Menu.ItemText> 117 117 <Menu.ItemIcon icon={ChainLinkIcon} position="right" /> 118 118 </Menu.Item> ··· 139 139 label={_(msg`Open original post`)} 140 140 onPress={onOpenOriginalPost}> 141 141 <Menu.ItemText> 142 - <Trans>Open original post</Trans> 142 + <Trans>Open original skeet</Trans> 143 143 </Menu.ItemText> 144 144 <Menu.ItemIcon icon={ExternalIcon} position="right" /> 145 145 </Menu.Item> ··· 151 151 label={_(msg`Open post in PDSls`)} 152 152 onPress={onOpenPostInPdsls}> 153 153 <Menu.ItemText> 154 - <Trans>Open post in PDSls</Trans> 154 + <Trans>Open skeet in PDSls</Trans> 155 155 </Menu.ItemText> 156 156 <Menu.ItemIcon icon={ExternalIcon} position="right" /> 157 157 </Menu.Item> ··· 180 180 logger.metric('share:press:embed', {}, {statsig: true}) 181 181 embedPostControl.open() 182 182 }}> 183 - <Menu.ItemText>{_(msg`Embed post`)}</Menu.ItemText> 183 + <Menu.ItemText>{_(msg`Embed skeet`)}</Menu.ItemText> 184 184 <Menu.ItemIcon icon={CodeBracketsIcon} position="right" /> 185 185 </Menu.Item> 186 186 )} ··· 190 190 {hasSession && <Menu.Divider />} 191 191 {copyLinkItem} 192 192 <Menu.LabelText style={{maxWidth: 220}}> 193 - <Trans>Note: This post is only visible to logged-in users.</Trans> 193 + <Trans>Note: This skeet is only visible to logged-in users.</Trans> 194 194 </Menu.LabelText> 195 195 </> 196 196 )} ··· 203 203 label={_(msg`Copy post at:// URI`)} 204 204 onPress={onShareATURI}> 205 205 <Menu.ItemText> 206 - <Trans>Copy post at:// URI</Trans> 206 + <Trans>Copy skeet at:// URI</Trans> 207 207 </Menu.ItemText> 208 208 <Menu.ItemIcon icon={ClipboardIcon} position="right" /> 209 209 </Menu.Item>
+1 -1
src/components/ProgressGuide/List.tsx
··· 60 60 <ProgressGuideTask 61 61 current={guide.numLikes + 1} 62 62 total={10 + 1} 63 - title={_(msg`Like 10 posts`)} 63 + title={_(msg`Like 10 skeets`)} 64 64 subtitle={_(msg`Teach our algorithm what you like`)} 65 65 /> 66 66 <ProgressGuideTask
+4 -4
src/components/RichTextTag.tsx
··· 109 109 <Menu.Outer> 110 110 <Menu.Group> 111 111 <Menu.Item 112 - label={_(msg`See ${tag} posts`)} 112 + label={_(msg`See ${tag} skeets`)} 113 113 onPress={() => { 114 114 navigation.push('Hashtag', { 115 115 tag: encodeURIComponent(tag), 116 116 }) 117 117 }}> 118 118 <Menu.ItemText> 119 - <Trans>See #{tag} posts</Trans> 119 + <Trans>See #{tag} skeets</Trans> 120 120 </Menu.ItemText> 121 121 <Menu.ItemIcon icon={Search} /> 122 122 </Menu.Item> 123 123 {authorHandle && !isInvalidHandle(authorHandle) && ( 124 124 <Menu.Item 125 - label={_(msg`See ${tag} posts by user`)} 125 + label={_(msg`See ${tag} skeets by user`)} 126 126 onPress={() => { 127 127 navigation.push('Hashtag', { 128 128 tag: encodeURIComponent(tag), ··· 130 130 }) 131 131 }}> 132 132 <Menu.ItemText> 133 - <Trans>See #{tag} posts by user</Trans> 133 + <Trans>See #{tag} skeets by user</Trans> 134 134 </Menu.ItemText> 135 135 <Menu.ItemIcon icon={Person} /> 136 136 </Menu.Item>
+2 -2
src/components/TrendingTopics.tsx
··· 175 175 if (link.startsWith('/search')) { 176 176 return { 177 177 type: 'topic', 178 - label: _(msg`Browse posts about ${displayName}`), 178 + label: _(msg`Browse skeets about ${displayName}`), 179 179 displayName, 180 180 uri: undefined, 181 181 url: link, ··· 183 183 } else if (link.startsWith('/hashtag')) { 184 184 return { 185 185 type: 'tag', 186 - label: _(msg`Browse posts tagged with ${displayName}`), 186 + label: _(msg`Browse skeets tagged with ${displayName}`), 187 187 displayName, 188 188 // displayName: displayName.replace(/^#/, ''), 189 189 uri: undefined,
+5 -5
src/components/WhoCanReply.tsx
··· 221 221 style={web({maxWidth: 400})}> 222 222 <View style={[a.gap_sm]}> 223 223 <Text style={[a.font_semi_bold, a.text_xl, a.pb_sm]}> 224 - <Trans>Who can interact with this post?</Trans> 224 + <Trans>Who can interact with this skeet?</Trans> 225 225 </Text> 226 226 <Rules 227 227 post={post} ··· 270 270 ]}> 271 271 {settings.length === 0 ? ( 272 272 <Trans> 273 - This post has an unknown type of threadgate on it. Your app may be 273 + This skeet has an unknown type of threadgate on it. Your app may be 274 274 out of date. 275 275 </Trans> 276 276 ) : settings[0].type === 'everybody' ? ( 277 - <Trans>Everybody can reply to this post.</Trans> 277 + <Trans>Everybody can reply to this skeet.</Trans> 278 278 ) : settings[0].type === 'nobody' ? ( 279 - <Trans>Replies to this post are disabled.</Trans> 279 + <Trans>Replies to this skeet are disabled.</Trans> 280 280 ) : ( 281 281 <Trans> 282 282 Only{' '} ··· 298 298 a.flex_wrap, 299 299 t.atoms.text_contrast_medium, 300 300 ]}> 301 - <Trans>No one but the author can quote this post.</Trans> 301 + <Trans>No one but the author can quote this skeet.</Trans> 302 302 </Text> 303 303 )} 304 304 </>
+3 -3
src/components/activity-notifications/SubscribeProfileButton.tsx
··· 54 54 const wrappedOnPress = requireEmailVerification(onPress, { 55 55 instructions: [ 56 56 <Trans key="message"> 57 - Before you can get notifications for {name}'s posts, you must first 57 + Before you can get notifications for {name}'s skeets, you must first 58 58 verify your email. 59 59 </Trans>, 60 60 ], ··· 79 79 size="small" 80 80 color="secondary" 81 81 shape="round" 82 - label={_(msg`Get notified when ${name} posts`)} 82 + label={_(msg`Get notified when ${name} skeets`)} 83 83 onPress={wrappedOnPress}> 84 84 <ButtonIcon icon={Icon} size="md" /> 85 85 </Button> 86 86 </Tooltip.Target> 87 87 <Tooltip.TextBubble> 88 88 <Text> 89 - <Trans>Get notified about new posts</Trans> 89 + <Trans>Get notified about new skeets</Trans> 90 90 </Text> 91 91 </Tooltip.TextBubble> 92 92 </Tooltip.Outer>
+3 -3
src/components/activity-notifications/SubscribeProfileDialog.tsx
··· 216 216 return ( 217 217 <Dialog.ScrollableInner 218 218 style={web({maxWidth: 400})} 219 - label={_(msg`Get notified of new posts from ${name}`)}> 219 + label={_(msg`Get notified of new skeets from ${name}`)}> 220 220 <View style={[a.gap_lg]}> 221 221 <View style={[a.gap_xs]}> 222 222 <Text style={[a.font_bold, a.text_2xl]}> ··· 247 247 onChange={onChange}> 248 248 <View style={[a.gap_sm]}> 249 249 <Toggle.Item 250 - label={_(msg`Posts`)} 250 + label={_(msg`Skeets`)} 251 251 name="post" 252 252 style={[ 253 253 a.flex_1, ··· 259 259 ]}> 260 260 <Toggle.LabelText 261 261 style={[t.atoms.text, a.font_normal, a.text_md, a.flex_1]}> 262 - <Trans>Posts</Trans> 262 + <Trans>Skeets</Trans> 263 263 </Toggle.LabelText> 264 264 <Toggle.Switch /> 265 265 </Toggle.Item>
+2 -2
src/components/dialogs/Embed.tsx
··· 105 105 <View style={[a.gap_lg]}> 106 106 <View style={[a.gap_sm]}> 107 107 <Text style={[a.text_2xl, a.font_bold]}> 108 - <Trans>Embed post</Trans> 108 + <Trans>Embed skeet</Trans> 109 109 </Text> 110 110 <Text 111 111 style={[a.text_md, t.atoms.text_contrast_medium, a.leading_normal]}> 112 112 <Trans> 113 - Embed this post in your website. Simply copy the following snippet 113 + Embed this skeet in your website. Simply copy the following snippet 114 114 and paste it into the HTML code of your website. 115 115 </Trans> 116 116 </Text>
+4 -4
src/components/dialogs/MutedWords.tsx
··· 118 118 </Text> 119 119 <Text style={[a.pb_lg, a.leading_snug, t.atoms.text_contrast_medium]}> 120 120 <Trans> 121 - Posts can be muted based on their text, their tags, or both. We 122 - recommend avoiding common words that appear in many posts, since it 123 - can result in no posts being shown. 121 + Skeets can be muted based on their text, their tags, or both. We 122 + recommend avoiding common words that appear in many skeets, since it 123 + can result in no skeets being shown. 124 124 </Trans> 125 125 </Text> 126 126 ··· 260 260 261 261 <View style={[a.flex_row, a.align_center, a.gap_sm, a.flex_wrap]}> 262 262 <Toggle.Item 263 - label={_(msg`Mute this word in post text and tags`)} 263 + label={_(msg`Mute this word in skeet text and tags`)} 264 264 name="content" 265 265 style={[a.flex_1]}> 266 266 <TargetToggle>
+4 -4
src/components/dialogs/PostInteractionSettingsDialog.tsx
··· 257 257 258 258 return ( 259 259 <Dialog.ScrollableInner 260 - label={_(msg`Edit post interaction settings`)} 260 + label={_(msg`Edit skeet interaction settings`)} 261 261 style={[web({maxWidth: 400}), a.w_full]}> 262 262 {isLoading ? ( 263 263 <View ··· 270 270 ]}> 271 271 <Loader size="xl" /> 272 272 <Text style={[a.italic, a.text_center]}> 273 - <Trans>Loading post interaction settings...</Trans> 273 + <Trans>Loading skeet interaction settings...</Trans> 274 274 </Text> 275 275 </View> 276 276 ) : ( ··· 627 627 {({selected}) => ( 628 628 <Toggle.Panel active={selected}> 629 629 <Toggle.PanelText icon={QuoteIcon}> 630 - <Trans>Allow quote posts</Trans> 630 + <Trans>Allow quote skeets</Trans> 631 631 </Toggle.PanelText> 632 632 <Toggle.Switch /> 633 633 </Toggle.Panel> ··· 676 676 return ( 677 677 <View style={[a.pb_lg]}> 678 678 <Text style={[a.text_2xl, a.font_bold]}> 679 - <Trans>Post interaction settings</Trans> 679 + <Trans>Skeet interaction settings</Trans> 680 680 </Text> 681 681 </View> 682 682 )
+2 -2
src/components/dialogs/lists/CreateOrEditListDialog.tsx
··· 350 350 : _(msg`Create moderation list`) 351 351 352 352 const displayNamePlaceholder = isCurateList 353 - ? _(msg`e.g. Great Posters`) 353 + ? _(msg`e.g. Great Skeeters`) 354 354 : _(msg`e.g. Spammers`) 355 355 356 356 const descriptionPlaceholder = isCurateList 357 - ? _(msg`e.g. The posters who never miss.`) 357 + ? _(msg`e.g. The skeeters who never miss.`) 358 358 : _(msg`e.g. Users that repeatedly reply with ads.`) 359 359 360 360 return (
+3 -3
src/components/dialogs/nuxs/BookmarksAnnouncement.tsx
··· 34 34 <Dialog.Handle /> 35 35 36 36 <Dialog.ScrollableInner 37 - label={_(msg`Introducing saved posts AKA bookmarks`)} 37 + label={_(msg`Introducing saved skeets AKA bookmarks`)} 38 38 style={[web({maxWidth: 440})]} 39 39 contentContainerStyle={[ 40 40 { ··· 140 140 maxWidth: 300, 141 141 }, 142 142 ]}> 143 - <Trans>Saved Posts</Trans> 143 + <Trans>Saved Skeets</Trans> 144 144 </Text> 145 145 <Text 146 146 style={[ ··· 152 152 }, 153 153 ]}> 154 154 <Trans> 155 - Finally! Keep track of posts that matter to you. Save them to 155 + Finally! Keep track of skeets that matter to you. Save them to 156 156 revisit anytime. 157 157 </Trans> 158 158 </Text>
+3 -3
src/components/dms/ChatEmptyPill.tsx
··· 30 30 31 31 const prompts = React.useMemo(() => { 32 32 return [ 33 - _(msg`Say hello!`), 33 + _(msg`Say hi!`), 34 34 _(msg`Share your favorite feed!`), 35 - _(msg`Tell a joke!`), 35 + _(msg`Say something funny!`), 36 36 _(msg`Share a fun fact!`), 37 37 _(msg`Share a cool story!`), 38 38 _(msg`Send a neat website!`), 39 - _(msg`Clip 🐴 clop 🐴`), 39 + _(msg`Clip 🐴 clop 🐴 #horsefacts`), 40 40 ] 41 41 }, [_]) 42 42
+1 -1
src/components/dms/dialogs/ShareViaChatDialog.tsx
··· 59 59 60 60 return ( 61 61 <SearchablePeopleList 62 - title={_(msg`Send post to...`)} 62 + title={_(msg`Send skeet to...`)} 63 63 onSelectChat={onCreateChat} 64 64 showRecentConvos 65 65 sortByMessageDeclaration
+4 -4
src/components/moderation/ModerationDetailsDialog.tsx
··· 106 106 description = _(msg`You have muted this account.`) 107 107 } 108 108 } else if (modcause.type === 'mute-word') { 109 - name = _(msg`Post Hidden by Muted Word`) 110 - description = _(msg`You've chosen to hide a word or tag within this post.`) 109 + name = _(msg`Skeet Hidden by Muted Word`) 110 + description = _(msg`You've chosen to hide a word or tag within this skeet.`) 111 111 } else if (modcause.type === 'hidden') { 112 - name = _(msg`Post Hidden by You`) 113 - description = _(msg`You have hidden this post.`) 112 + name = _(msg`Skeet Hidden by You`) 113 + description = _(msg`You have hidden this skeet.`) 114 114 } else if (modcause.type === 'reply-hidden') { 115 115 const isYou = currentAccount?.did === modcause.source.did 116 116 name = isYou
+2 -2
src/components/moderation/ReportDialog/copy.ts
··· 16 16 } 17 17 case 'post': { 18 18 return { 19 - title: _(msg`Report this post`), 20 - subtitle: _(msg`Why should this post be reviewed?`), 19 + title: _(msg`Report this skeet`), 20 + subtitle: _(msg`Why should this skeet be reviewed?`), 21 21 } 22 22 } 23 23 case 'list': {
+1 -1
src/lib/api/index.ts
··· 183 183 }) 184 184 if (isNetworkError(e)) { 185 185 throw new Error( 186 - t`Post failed to upload. Please check your Internet connection and try again.`, 186 + t`Skeet failed to upload. Please check your Internet connection and try again.`, 187 187 ) 188 188 } else { 189 189 throw e
+3 -3
src/lib/hooks/useNotificationHandler.ts
··· 130 130 Notifications.setNotificationChannelAsync( 131 131 'repost' satisfies NotificationReason, 132 132 { 133 - name: _(msg`Reposts`), 133 + name: _(msg`Reskeets`), 134 134 importance: Notifications.AndroidImportance.HIGH, 135 135 }, 136 136 ) ··· 165 165 Notifications.setNotificationChannelAsync( 166 166 'like-via-repost' satisfies NotificationReason, 167 167 { 168 - name: _(msg`Likes of your reposts`), 168 + name: _(msg`Likes of your reskeets`), 169 169 importance: Notifications.AndroidImportance.HIGH, 170 170 }, 171 171 ) 172 172 Notifications.setNotificationChannelAsync( 173 173 'repost-via-repost' satisfies NotificationReason, 174 174 { 175 - name: _(msg`Reposts of your reposts`), 175 + name: _(msg`Reskeets of your reskeets`), 176 176 importance: Notifications.AndroidImportance.HIGH, 177 177 }, 178 178 )
+4 -4
src/lib/moderation/useModerationCauseDescription.ts
··· 104 104 if (cause.type === 'mute-word') { 105 105 return { 106 106 icon: EyeSlash, 107 - name: _(msg`Post Hidden by Muted Word`), 107 + name: _(msg`Skeet Hidden by Muted Word`), 108 108 description: _( 109 - msg`You've chosen to hide a word or tag within this post.`, 109 + msg`You've chosen to hide a word or tag within this skeet.`, 110 110 ), 111 111 } 112 112 } 113 113 if (cause.type === 'hidden') { 114 114 return { 115 115 icon: EyeSlash, 116 - name: _(msg`Post Hidden by You`), 117 - description: _(msg`You have hidden this post`), 116 + name: _(msg`Skeet Hidden by You`), 117 + description: _(msg`You have hidden this skeet.`), 118 118 } 119 119 } 120 120 if (cause.type === 'reply-hidden') {
+1 -1
src/locale/locales/en/messages.po
··· 10519 10519 #: src/view/com/auth/SplashScreen.web.tsx:103 10520 10520 #: src/view/com/composer/Composer.tsx:855 10521 10521 msgid "What's up?" 10522 - msgstr "Skeet yo shit! 🗣️" 10522 + msgstr "" 10523 10523 10524 10524 #: src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx:146 10525 10525 msgid "When you tap on a check, you’ll see which organizations have granted verification."
+4 -4
src/screens/Bookmarks/index.tsx
··· 52 52 <Layout.Header.BackButton /> 53 53 <Layout.Header.Content> 54 54 <Layout.Header.TitleText> 55 - <Trans>Saved Posts</Trans> 55 + <Trans>Saved Skeets</Trans> 56 56 </Layout.Header.TitleText> 57 57 </Layout.Header.Content> 58 58 <Layout.Header.Slot /> ··· 204 204 const remove = async () => { 205 205 try { 206 206 await bookmark({action: 'delete', uri: post.uri}) 207 - toast.show(_(msg`Removed from saved posts`), { 207 + toast.show(_(msg`Removed from saved skeets`), { 208 208 type: 'info', 209 209 }) 210 210 } catch (e: any) { ··· 242 242 a.italic, 243 243 t.atoms.text_contrast_medium, 244 244 ]}> 245 - <Trans>This post was deleted by its author</Trans> 245 + <Trans>This skeet was deleted by its author</Trans> 246 246 </Text> 247 247 </View> 248 248 <Button 249 - label={_(msg`Remove from saved posts`)} 249 + label={_(msg`Remove from saved skeets`)} 250 250 size="tiny" 251 251 color="secondary" 252 252 onPress={remove}>
+1 -1
src/screens/Moderation/index.tsx
··· 238 238 t.atoms.bg_contrast_25, 239 239 ]}> 240 240 <Link 241 - label={_(msg`View your default post interaction settings`)} 241 + label={_(msg`View your default skeet interaction settings`)} 242 242 testID="interactionSettingsBtn" 243 243 to="/moderation/interaction-settings"> 244 244 {state => (
+2 -2
src/screens/ModerationInteractionSettings/index.tsx
··· 31 31 <Layout.Header.BackButton /> 32 32 <Layout.Header.Content> 33 33 <Layout.Header.TitleText> 34 - <Trans>Post Interaction Settings</Trans> 34 + <Trans>Skeet Interaction Settings</Trans> 35 35 </Layout.Header.TitleText> 36 36 </Layout.Header.Content> 37 37 <Layout.Header.Slot /> ··· 41 41 <Admonition type="tip"> 42 42 <Trans> 43 43 The following settings will be used as your defaults when creating 44 - new posts. You can edit these for a specific post from the 44 + new skeets. You can edit these for a specific skeet from the 45 45 composer. 46 46 </Trans> 47 47 </Admonition>
+1 -1
src/screens/Notifications/ActivityList.tsx
··· 35 35 feed={`posts|${uris}`} 36 36 disablePoll 37 37 renderEmptyState={() => ( 38 - <EmptyState icon="growth" message={_(msg`No posts here`)} /> 38 + <EmptyState icon="growth" message={_(msg`No skeets here`)} /> 39 39 )} 40 40 renderEndOfFeed={() => <ListFooter />} 41 41 />
+3 -3
src/screens/Post/PostRepostedBy.tsx
··· 38 38 {post && ( 39 39 <> 40 40 <Layout.Header.TitleText> 41 - <Trans>Reposted By</Trans> 41 + <Trans>Reskeeted By</Trans> 42 42 </Layout.Header.TitleText> 43 43 <Layout.Header.SubtitleText> 44 44 <Plural 45 45 value={quoteCount ?? 0} 46 - one="# repost" 47 - other="# reposts" 46 + one="# reskeet" 47 + other="# reskeets" 48 48 /> 49 49 </Layout.Header.SubtitleText> 50 50 </>
+2 -2
src/screens/PostThread/components/ThreadError.tsx
··· 23 23 const cleanError = useCleanError() 24 24 25 25 const {title, message} = useMemo(() => { 26 - let title = _(msg`Error loading post`) 26 + let title = _(msg`Error loading skeet`) 27 27 let message = _(msg`Something went wrong. Please try again in a moment.`) 28 28 29 29 const {raw, clean} = cleanError(error) 30 30 31 31 if (error.message.startsWith('Post not found')) { 32 - title = _(msg`Post not found`) 32 + title = _(msg`Skeet not found`) 33 33 message = clean || raw || message 34 34 } 35 35
+8 -8
src/screens/PostThread/components/ThreadItemAnchor.tsx
··· 135 135 </View> 136 136 <Text 137 137 style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 138 - <Trans>Post has been deleted</Trans> 138 + <Trans>Skeet has been deleted</Trans> 139 139 </Text> 140 140 </View> 141 141 </View> ··· 445 445 {post.repostCount != null && 446 446 post.repostCount !== 0 && 447 447 !disableRepostsMetrics ? ( 448 - <Link to={repostsHref} label={_(msg`Reposts of this post`)}> 448 + <Link to={repostsHref} label={_(msg`Reskeets of this skeet`)}> 449 449 <Text 450 450 testID="repostCount-expanded" 451 451 style={[a.text_md, t.atoms.text_contrast_medium]}> ··· 454 454 </Text>{' '} 455 455 <Plural 456 456 value={post.repostCount} 457 - one="repost" 458 - other="reposts" 457 + one="reskeet" 458 + other="reskeets" 459 459 /> 460 460 </Text> 461 461 </Link> ··· 464 464 post.quoteCount !== 0 && 465 465 !post.viewer?.embeddingDisabled && 466 466 !disableQuotesMetrics ? ( 467 - <Link to={quotesHref} label={_(msg`Quotes of this post`)}> 467 + <Link to={quotesHref} label={_(msg`Quotes of this skeet`)}> 468 468 <Text 469 469 testID="quoteCount-expanded" 470 470 style={[a.text_md, t.atoms.text_contrast_medium]}> ··· 482 482 {post.likeCount != null && 483 483 post.likeCount !== 0 && 484 484 !disableLikesMetrics ? ( 485 - <Link to={likesHref} label={_(msg`Likes on this post`)}> 485 + <Link to={likesHref} label={_(msg`Likes on this skeet`)}> 486 486 <Text 487 487 testID="likeCount-expanded" 488 488 style={[a.text_md, t.atoms.text_contrast_medium]}> ··· 643 643 <Button 644 644 label={_(msg`Archived post`)} 645 645 accessibilityHint={_( 646 - msg`Shows information about when this post was created`, 646 + msg`Shows information about when this skeet was created`, 647 647 )} 648 648 onPress={e => { 649 649 e.preventDefault() ··· 684 684 </Prompt.TitleText> 685 685 <Prompt.DescriptionText> 686 686 <Trans> 687 - This post claims to have been created on{' '} 687 + This skeet claims to have been created on{' '} 688 688 <RNText style={[a.font_semi_bold]}> 689 689 {niceDate(i18n, createdAt)} 690 690 </RNText>
+1 -1
src/screens/PostThread/components/ThreadItemPost.tsx
··· 109 109 </View> 110 110 <Text 111 111 style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 112 - <Trans>Post has been deleted</Trans> 112 + <Trans>Skeet has been deleted</Trans> 113 113 </Text> 114 114 </View> 115 115
+2 -2
src/screens/PostThread/components/ThreadItemPostTombstone.tsx
··· 19 19 const {copy, Icon} = useMemo(() => { 20 20 switch (type) { 21 21 case 'blocked': 22 - return {copy: _(msg`Post blocked`), Icon: PersonXIcon} 22 + return {copy: _(msg`Skeet blocked`), Icon: PersonXIcon} 23 23 case 'not-found': 24 24 default: 25 - return {copy: _(msg`Post not found`), Icon: TrashIcon} 25 + return {copy: _(msg`Skeet not found`), Icon: TrashIcon} 26 26 } 27 27 }, [_, type]) 28 28
+1 -1
src/screens/PostThread/components/ThreadItemTreePost.tsx
··· 105 105 ]}> 106 106 <TrashIcon style={[t.atoms.text]} width={14} /> 107 107 <Text style={[t.atoms.text_contrast_medium, a.mt_2xs]}> 108 - <Trans>Post has been deleted</Trans> 108 + <Trans>Skeet has been deleted</Trans> 109 109 </Text> 110 110 </View> 111 111 {item.ui.isLastChild && !item.ui.precedesChildReadMore && (
+1 -1
src/screens/PostThread/index.tsx
··· 501 501 <Layout.Header.BackButton /> 502 502 <Layout.Header.Content> 503 503 <Layout.Header.TitleText> 504 - <Trans context="description">Post</Trans> 504 + <Trans context="description">Skeet</Trans> 505 505 </Layout.Header.TitleText> 506 506 </Layout.Header.Content> 507 507 <Layout.Header.Slot>
+1 -1
src/screens/Profile/Header/Metrics.tsx
··· 55 55 <Text style={[a.font_semi_bold, t.atoms.text, a.text_md]}> 56 56 {formatCount(i18n, profile.postsCount || 0)}{' '} 57 57 <Text style={[t.atoms.text_contrast_medium, a.font_normal, a.text_md]}> 58 - {plural(profile.postsCount || 0, {one: 'post', other: 'posts'})} 58 + {plural(profile.postsCount || 0, {one: 'skeet', other: 'skeets'})} 59 59 </Text> 60 60 </Text> 61 61 </View>
+1 -1
src/screens/Profile/ProfileFeed/index.tsx
··· 221 221 {(isScrolledDown || hasNew) && ( 222 222 <LoadLatestBtn 223 223 onPress={onScrollToTop} 224 - label={_(msg`Load new posts`)} 224 + label={_(msg`Load new skeets`)} 225 225 showIndicator={hasNew} 226 226 /> 227 227 )}
+2 -2
src/screens/Profile/ProfileSearch.tsx
··· 33 33 inputPlaceholder={ 34 34 profile 35 35 ? currentAccount?.did === profile.did 36 - ? _(msg`Search my posts`) 37 - : _(msg`Search @${profile.handle}'s posts`) 36 + ? _(msg`Search my skeets`) 37 + : _(msg`Search @${profile.handle}'s skeets`) 38 38 : _(msg`Search...`) 39 39 } 40 40 fixedParams={fixedParams}
+2 -2
src/screens/Profile/Sections/Feed.tsx
··· 59 59 })) 60 60 61 61 const renderPostsEmpty = useCallback(() => { 62 - return <EmptyState icon="growth" message={_(msg`No posts yet.`)} /> 62 + return <EmptyState icon="growth" message={_(msg`No skeets yet.`)} /> 63 63 }, [_]) 64 64 65 65 useEffect(() => { ··· 91 91 {(isScrolledDown || hasNew) && ( 92 92 <LoadLatestBtn 93 93 onPress={onScrollToTop} 94 - label={_(msg`Load new posts`)} 94 + label={_(msg`Load new skeets`)} 95 95 showIndicator={hasNew} 96 96 /> 97 97 )}
+1 -1
src/screens/ProfileList/FeedSection.tsx
··· 102 102 {(isScrolledDown || hasNew) && ( 103 103 <LoadLatestBtn 104 104 onPress={onScrollToTop} 105 - label={_(msg`Load new posts`)} 105 + label={_(msg`Load new skeets`)} 106 106 showIndicator={hasNew} 107 107 /> 108 108 )}
+1 -1
src/screens/ProfileList/components/SubscribeMenu.tsx
··· 109 109 control={subscribeMutePromptControl} 110 110 title={_(msg`Mute these accounts?`)} 111 111 description={_( 112 - msg`Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them.`, 112 + msg`Muting is private. Muted accounts can interact with you, but you will not see their skeets or receive notifications from them.`, 113 113 )} 114 114 onConfirm={onSubscribeMute} 115 115 confirmButtonCta={_(msg`Mute list`)}
+1 -1
src/screens/ProfileList/index.tsx
··· 163 163 const isOwner = currentAccount?.did === list.creator.did 164 164 const scrollElRef = useAnimatedRef() 165 165 const addUserDialogControl = useDialogControl() 166 - const sectionTitlesCurate = [_(msg`Posts`), _(msg`People`)] 166 + const sectionTitlesCurate = [_(msg`Skeets`), _(msg`People`)] 167 167 168 168 const moderation = useMemo(() => { 169 169 return moderateUserList(list, moderationOpts)
+1 -1
src/screens/Search/Explore.tsx
··· 989 989 return ( 990 990 <LoadMoreRetryBtn 991 991 label={_( 992 - msg`There was an issue fetching posts. Tap here to try again.`, 992 + msg`There was an issue fetching skeets. Tap here to try again.`, 993 993 )} 994 994 onPress={fetchNextPageFeedPreviews} 995 995 />
+2 -2
src/screens/Search/Shell.tsx
··· 351 351 onSubmitEditing={onSubmit} 352 352 placeholder={ 353 353 inputPlaceholder ?? 354 - _(msg`Search for posts, users, or feeds`) 354 + _(msg`Search for skeets, users, or feeds`) 355 355 } 356 356 hitSlop={{...HITSLOP_20, top: 0}} 357 357 /> ··· 523 523 style={t.atoms.text_contrast_medium as StyleProp<ViewStyle>} 524 524 /> 525 525 <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 526 - <Trans>Find posts, users, and feeds on Bluesky</Trans> 526 + <Trans>Find skeets, users, and feeds on Witchsky</Trans> 527 527 </Text> 528 528 </View> 529 529 </View>
+1 -1
src/screens/Search/modules/ExploreTrendingTopics.tsx
··· 80 80 const postCount = trend.postCount 81 81 ? _( 82 82 plural(trend.postCount, { 83 - other: `${formatCount(i18n, trend.postCount)} posts`, 83 + other: `${formatCount(i18n, trend.postCount)} skeets`, 84 84 }), 85 85 ) 86 86 : null
+2 -2
src/screens/Settings/AccessibilitySettings.tsx
··· 55 55 </SettingsList.ItemText> 56 56 <Toggle.Item 57 57 name="require_alt_text" 58 - label={_(msg`Require alt text before posting`)} 58 + label={_(msg`Require alt text before skeeting`)} 59 59 value={requireAltTextEnabled ?? false} 60 60 onChange={value => setRequireAltTextEnabled(value)} 61 61 style={[a.w_full]}> 62 62 <Toggle.LabelText style={[a.flex_1]}> 63 - <Trans>Require alt text before posting</Trans> 63 + <Trans>Require alt text before skeeting</Trans> 64 64 </Toggle.LabelText> 65 65 <Toggle.Platform /> 66 66 </Toggle.Item>
+2 -2
src/screens/Settings/ActivityPrivacySettings.tsx
··· 49 49 <ItemTextWithSubtitle 50 50 bold 51 51 titleText={ 52 - <Trans>Allow others to be notified of your posts</Trans> 52 + <Trans>Allow others to be notified of your skeets</Trans> 53 53 } 54 54 subtitleText={ 55 55 <Trans> 56 56 This feature allows users to receive notifications for your 57 - new posts and replies. Who do you want to enable this for? 57 + new skeets and replies. Who do you want to enable this for? 58 58 </Trans> 59 59 } 60 60 />
+4 -4
src/screens/Settings/FollowingFeedPreferences.tsx
··· 86 86 <Toggle.Item 87 87 type="checkbox" 88 88 name="show-reposts" 89 - label={_(msg`Show reposts`)} 89 + label={_(msg`Show reskeets`)} 90 90 value={showReposts} 91 91 onChange={value => 92 92 setFeedViewPref({ ··· 96 96 <SettingsList.Item> 97 97 <SettingsList.ItemIcon icon={RepostIcon} /> 98 98 <SettingsList.ItemText> 99 - <Trans>Show reposts</Trans> 99 + <Trans>Show reskeets</Trans> 100 100 </SettingsList.ItemText> 101 101 <Toggle.Platform /> 102 102 </SettingsList.Item> ··· 104 104 <Toggle.Item 105 105 type="checkbox" 106 106 name="show-quotes" 107 - label={_(msg`Show quote posts`)} 107 + label={_(msg`Show quote skeets`)} 108 108 value={showQuotePosts} 109 109 onChange={value => 110 110 setFeedViewPref({ ··· 114 114 <SettingsList.Item> 115 115 <SettingsList.ItemIcon icon={QuoteIcon} /> 116 116 <SettingsList.ItemText> 117 - <Trans>Show quote posts</Trans> 117 + <Trans>Show quote skeets</Trans> 118 118 </SettingsList.ItemText> 119 119 <Toggle.Platform /> 120 120 </SettingsList.Item>
+3 -3
src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx
··· 102 102 titleText={<Trans>Activity from others</Trans>} 103 103 subtitleText={ 104 104 <Trans> 105 - Get notified about posts and replies from accounts you 105 + Get notified about skeets and replies from accounts you 106 106 choose. 107 107 </Trans> 108 108 } ··· 211 211 const preview = useMemo(() => { 212 212 const actSub = profile.viewer?.activitySubscription 213 213 if (actSub?.post && actSub?.reply) { 214 - return _(msg`Posts, Replies`) 214 + return _(msg`Skeets, Replies`) 215 215 } else if (actSub?.post) { 216 - return _(msg`Posts`) 216 + return _(msg`Skeets`) 217 217 } else if (actSub?.reply) { 218 218 return _(msg`Replies`) 219 219 }
+1 -1
src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx
··· 40 40 bold 41 41 titleText={<Trans>Likes</Trans>} 42 42 subtitleText={ 43 - <Trans>Get notifications when people like your posts.</Trans> 43 + <Trans>Get notifications when people like your skeets.</Trans> 44 44 } 45 45 /> 46 46 </SettingsList.Item>
+2 -2
src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx
··· 38 38 <SettingsList.ItemIcon icon={LikeRepostIcon} /> 39 39 <ItemTextWithSubtitle 40 40 bold 41 - titleText={<Trans>Likes of your reposts</Trans>} 41 + titleText={<Trans>Likes of your reskeets</Trans>} 42 42 subtitleText={ 43 43 <Trans> 44 - Get notifications when people like posts that you've reposted. 44 + Get notifications when people like skeets that you've reskeeted. 45 45 </Trans> 46 46 } 47 47 />
+1 -1
src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx
··· 40 40 bold 41 41 titleText={<Trans>Quotes</Trans>} 42 42 subtitleText={ 43 - <Trans>Get notifications when people quote your posts.</Trans> 43 + <Trans>Get notifications when people quote your skeets.</Trans> 44 44 } 45 45 /> 46 46 </SettingsList.Item>
+1 -1
src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx
··· 41 41 titleText={<Trans>Replies</Trans>} 42 42 subtitleText={ 43 43 <Trans> 44 - Get notifications when people reply to your posts. 44 + Get notifications when people reply to your skeets. 45 45 </Trans> 46 46 } 47 47 />
+2 -2
src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx
··· 38 38 <SettingsList.ItemIcon icon={RepostIcon} /> 39 39 <ItemTextWithSubtitle 40 40 bold 41 - titleText={<Trans>Reposts</Trans>} 41 + titleText={<Trans>Reskeets</Trans>} 42 42 subtitleText={ 43 - <Trans>Get notifications when people repost your posts.</Trans> 43 + <Trans>Get notifications when people reskeet your skeets.</Trans> 44 44 } 45 45 /> 46 46 </SettingsList.Item>
+3 -3
src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx
··· 38 38 <SettingsList.ItemIcon icon={RepostRepostIcon} /> 39 39 <ItemTextWithSubtitle 40 40 bold 41 - titleText={<Trans>Reposts of your reposts</Trans>} 41 + titleText={<Trans>Reskeets of your reskeets</Trans>} 42 42 subtitleText={ 43 43 <Trans> 44 - Get notifications when people repost posts that you've 45 - reposted. 44 + Get notifications when people reskeet skeets that you've 45 + reskeeted. 46 46 </Trans> 47 47 } 48 48 />
+4 -4
src/screens/Settings/NotificationSettings/index.tsx
··· 173 173 /> 174 174 </SettingsList.LinkItem> 175 175 <SettingsList.LinkItem 176 - label={_(msg`Settings for repost notifications`)} 176 + label={_(msg`Settings for reskeet notifications`)} 177 177 to={{screen: 'RepostNotificationSettings'}} 178 178 contentContainerStyle={[a.align_start]}> 179 179 <SettingsList.ItemIcon icon={RepostIcon} /> 180 180 <ItemTextWithSubtitle 181 - titleText={<Trans>Reposts</Trans>} 181 + titleText={<Trans>Reskeets</Trans>} 182 182 subtitleText={<SettingPreview preference={settings?.repost} />} 183 183 showSkeleton={!settings} 184 184 /> ··· 204 204 contentContainerStyle={[a.align_start]}> 205 205 <SettingsList.ItemIcon icon={LikeRepostIcon} /> 206 206 <ItemTextWithSubtitle 207 - titleText={<Trans>Likes of your reposts</Trans>} 207 + titleText={<Trans>Likes of your reskeets</Trans>} 208 208 subtitleText={ 209 209 <SettingPreview preference={settings?.likeViaRepost} /> 210 210 } ··· 219 219 contentContainerStyle={[a.align_start]}> 220 220 <SettingsList.ItemIcon icon={RepostRepostIcon} /> 221 221 <ItemTextWithSubtitle 222 - titleText={<Trans>Reposts of your reposts</Trans>} 222 + titleText={<Trans>Reskeets of your reskeets</Trans>} 223 223 subtitleText={ 224 224 <SettingPreview preference={settings?.repostViaRepost} /> 225 225 }
+2 -2
src/screens/Settings/PrivacyAndSecuritySettings.tsx
··· 81 81 </SettingsList.LinkItem> 82 82 <SettingsList.LinkItem 83 83 label={_( 84 - msg`Settings for allowing others to be notified of your posts`, 84 + msg`Settings for allowing others to be notified of your skeets`, 85 85 )} 86 86 to={{screen: 'ActivityPrivacySettings'}} 87 87 contentContainerStyle={[a.align_start]}> 88 88 <SettingsList.ItemIcon icon={BellRingingIcon} /> 89 89 <ItemTextWithSubtitle 90 90 titleText={ 91 - <Trans>Allow others to be notified of your posts</Trans> 91 + <Trans>Allow others to be notified of your skeets</Trans> 92 92 } 93 93 subtitleText={ 94 94 <NotificationDeclaration
+2 -2
src/screens/Settings/ThreadPreferences.tsx
··· 45 45 </SettingsList.ItemText> 46 46 <View style={[a.w_full, a.gap_md]}> 47 47 <Text style={[a.flex_1, t.atoms.text_contrast_medium]}> 48 - <Trans>Sort replies to the same post by:</Trans> 48 + <Trans>Sort replies to the same skeet by:</Trans> 49 49 </Text> 50 50 <Toggle.Group 51 51 label={_(msg`Sort replies by`)} ··· 95 95 } 96 96 style={[a.w_full, a.gap_md]}> 97 97 <Toggle.LabelText style={[a.flex_1]}> 98 - <Trans>Show post replies in a threaded tree view</Trans> 98 + <Trans>Show skeet replies in a threaded tree view</Trans> 99 99 </Toggle.LabelText> 100 100 <Toggle.Platform /> 101 101 </Toggle.Item>
+2 -2
src/screens/StarterPack/StarterPackScreen.tsx
··· 188 188 const tabs = [ 189 189 ...(showPeopleTab ? [_(msg`People`)] : []), 190 190 ...(showFeedsTab ? [_(msg`Feeds`)] : []), 191 - ...(showPostsTab ? [_(msg`Posts`)] : []), 191 + ...(showPostsTab ? [_(msg`Skeets`)] : []), 192 192 ] 193 193 194 194 const qrCodeDialogControl = useDialogControl() ··· 560 560 return ( 561 561 <> 562 562 <Menu.Root> 563 - <Menu.Trigger label={_(msg`Repost or quote post`)}> 563 + <Menu.Trigger label={_(msg`Reskeet or quote skeet`)}> 564 564 {({props}) => ( 565 565 <Button 566 566 {...props}
+1 -1
src/screens/VideoFeed/index.tsx
··· 532 532 a.leading_tight, 533 533 a.mx_xl, 534 534 ]}> 535 - <Trans>Post has been deleted</Trans> 535 + <Trans>Skeet has been deleted</Trans> 536 536 </Text> 537 537 </View> 538 538 ) : (
+4 -4
src/state/persisted/schema.ts
··· 202 202 kawaii: false, 203 203 hasCheckedForStarterPack: false, 204 204 subtitlesEnabled: true, 205 - trendingDisabled: false, 206 - trendingVideoDisabled: false, 205 + trendingDisabled: true, 206 + trendingVideoDisabled: true, 207 207 208 208 // deer 209 209 goLinksEnabled: true, 210 - constellationEnabled: false, 210 + constellationEnabled: true, 211 211 directFetchRecords: true, 212 212 noAppLabelers: false, 213 213 noDiscoverFallback: false, ··· 221 221 disableQuotesMetrics: false, 222 222 disableSavesMetrics: false, 223 223 disableReplyMetrics: false, 224 - hideSimilarAccountsRecomm: false, 224 + hideSimilarAccountsRecomm: true, 225 225 enableSquareAvatars: false, 226 226 deerVerification: { 227 227 enabled: false,
+3 -3
src/state/queries/pinned-post.ts
··· 56 56 }) 57 57 58 58 if (pinCurrentPost) { 59 - Toast.show(_(msg({message: 'Post pinned', context: 'toast'}))) 59 + Toast.show(_(msg({message: 'Skeet pinned', context: 'toast'}))) 60 60 } else { 61 - Toast.show(_(msg({message: 'Post unpinned', context: 'toast'}))) 61 + Toast.show(_(msg({message: 'Skeet unpinned', context: 'toast'}))) 62 62 } 63 63 64 64 queryClient.invalidateQueries({ ··· 72 72 ), 73 73 }) 74 74 } catch (e: any) { 75 - Toast.show(_(msg`Failed to pin post`)) 75 + Toast.show(_(msg`Failed to pin skeet`)) 76 76 logger.error('Failed to pin post', {message: String(e)}) 77 77 // revert optimistic update 78 78 updatePostShadow(queryClient, postUri, {
+2 -2
src/state/shell/progress-guide.tsx
··· 213 213 <ProgressGuideToast 214 214 ref={firstLikeToastRef} 215 215 title={_(msg`Your first like!`)} 216 - subtitle={_(msg`Like 10 posts to train the Discover feed`)} 216 + subtitle={_(msg`Like 10 skeets to train the Discover feed`)} 217 217 /> 218 218 <ProgressGuideToast 219 219 ref={fifthLikeToastRef} 220 220 title={_(msg`Half way there!`)} 221 - subtitle={_(msg`Like 10 posts to train the Discover feed`)} 221 + subtitle={_(msg`Like 10 skeets to train the Discover feed`)} 222 222 /> 223 223 <ProgressGuideToast 224 224 ref={tenthLikeToastRef}
+1 -1
src/view/com/auth/SplashScreen.tsx
··· 48 48 t.atoms.text_contrast_medium, 49 49 a.text_center, 50 50 ]}> 51 - <Trans>What's up?</Trans> 51 + <Trans>Skeet yo stuff! 🗣️</Trans> 52 52 </Text> 53 53 </View> 54 54
+1 -1
src/view/com/auth/SplashScreen.web.tsx
··· 100 100 a.font_semi_bold, 101 101 t.atoms.text_contrast_medium, 102 102 ]}> 103 - <Trans>What's up?</Trans> 103 + <Trans>Skeet yo shit! 🗣️</Trans> 104 104 </Text> 105 105 </View> 106 106
+13 -13
src/view/com/composer/Composer.tsx
··· 507 507 let err = cleanError(e.message) 508 508 if (err.includes('not locate record')) { 509 509 err = _( 510 - msg`We're sorry! The post you are replying to has been deleted.`, 510 + msg`We're sorry! The skeet you are replying to has been deleted.`, 511 511 ) 512 512 } else if (e instanceof EmbeddingDisabledError) { 513 - err = _(msg`This post's author has disabled quote posts.`) 513 + err = _(msg`This skeet's author has disabled quote skeets.`) 514 514 } 515 515 setError(err) 516 516 setIsPublishing(false) ··· 570 570 <Toast.Icon /> 571 571 <Toast.Text> 572 572 {thread.posts.length > 1 573 - ? _(msg`Your posts were sent`) 573 + ? _(msg`Your skeets were sent`) 574 574 : replyTo 575 575 ? _(msg`Your reply was sent`) 576 - : _(msg`Your post was sent`)} 576 + : _(msg`Your skeet was sent`)} 577 577 </Toast.Text> 578 578 {postUri && ( 579 579 <Toast.Action 580 - label={_(msg`View post`)} 580 + label={_(msg`View skeet`)} 581 581 onPress={() => { 582 582 const {host: name, rkey} = new AtUri(postUri) 583 583 navigation.navigate('PostThread', {name, rkey}) 584 584 }}> 585 - <Trans context="Action to view the post the user just created"> 585 + <Trans context="Action to view the skeet the user just created"> 586 586 View 587 587 </Trans> 588 588 </Toast.Action> ··· 851 851 const selectTextInputPlaceholder = isReply 852 852 ? isFirstPost 853 853 ? _(msg`Write your reply`) 854 - : _(msg`Add another post`) 855 - : _(msg`What's up?`) 854 + : _(msg`Add another skeet`) 855 + : _(msg`Anything but skeet`) 856 856 const discardPromptControl = Prompt.usePromptControl() 857 857 858 858 const dispatchPost = useCallback( ··· 964 964 {canRemovePost && isActive && ( 965 965 <> 966 966 <Button 967 - label={_(msg`Delete post`)} 967 + label={_(msg`Delete skeet`)} 968 968 size="small" 969 969 color="secondary" 970 970 variant="ghost" ··· 989 989 </Button> 990 990 <Prompt.Basic 991 991 control={discardPromptControl} 992 - title={_(msg`Discard post?`)} 993 - description={_(msg`Are you sure you'd like to discard this post?`)} 992 + title={_(msg`Discard skeet?`)} 993 + description={_(msg`Are you sure you'd like to discard this skeet?`)} 994 994 onConfirm={() => { 995 995 dispatch({ 996 996 type: 'remove_post', ··· 1115 1115 {isReply ? ( 1116 1116 <Trans context="action">Reply</Trans> 1117 1117 ) : isThread ? ( 1118 - <Trans context="action">Post All</Trans> 1118 + <Trans context="action">Skeet All</Trans> 1119 1119 ) : ( 1120 - <Trans context="action">Post</Trans> 1120 + <Trans context="action">Skeet</Trans> 1121 1121 )} 1122 1122 </ButtonText> 1123 1123 </Button>
+1 -1
src/view/com/composer/labels/LabelsBtn.tsx
··· 109 109 <Text style={[t.atoms.text_contrast_medium, a.leading_snug]}> 110 110 <Trans> 111 111 Please add any content warning labels that are applicable for the 112 - media you are posting. 112 + media you are skeeting. 113 113 </Trans> 114 114 </Text> 115 115 </View>
+2 -2
src/view/com/composer/select-language/PostLanguageSelect.tsx
··· 54 54 return ( 55 55 <> 56 56 <Menu.Root> 57 - <Menu.Trigger label={_(msg`Select post language`)}> 57 + <Menu.Trigger label={_(msg`Select skeet language`)}> 58 58 {({props}) => ( 59 59 <LanguageBtn currentLanguages={currentLanguages} {...props} /> 60 60 )} ··· 122 122 hitSlop={LANG_DROPDOWN_HITSLOP} 123 123 label={_( 124 124 msg({ 125 - message: `Post language selection`, 125 + message: `Skeet language selection`, 126 126 comment: `Accessibility label for button that opens dialog to choose post language settings`, 127 127 }), 128 128 )}
+2 -2
src/view/com/composer/select-language/PostLanguageSelectDialog.tsx
··· 181 181 a.text_xl, 182 182 a.mb_sm, 183 183 ]}> 184 - <Trans>Choose Post Languages</Trans> 184 + <Trans>Choose Skeet Languages</Trans> 185 185 </Text> 186 186 <Text 187 187 nativeID="dialog-description" ··· 191 191 a.text_md, 192 192 a.mb_lg, 193 193 ]}> 194 - <Trans>Select up to 3 languages used in this post</Trans> 194 + <Trans>Select up to 3 languages used in this skeet</Trans> 195 195 </Text> 196 196 </View> 197 197
+1 -1
src/view/com/composer/select-language/SuggestedLanguage.tsx
··· 117 117 label={ 118 118 <RNText> 119 119 <Trans> 120 - The post you're replying to was marked as being written in{' '} 120 + The skeet you're replying to was marked as being written in{' '} 121 121 {suggestedLanguageName} by its author. Would you like to reply in{' '} 122 122 <Text style={[a.font_bold]}>{suggestedLanguageName}</Text>? 123 123 </Trans>
+1 -1
src/view/com/feeds/FeedPage.tsx
··· 166 166 {(isScrolledDown || hasNew) && ( 167 167 <LoadLatestBtn 168 168 onPress={onPressLoadLatest} 169 - label={_(msg`Load new posts`)} 169 + label={_(msg`Load new skeets`)} 170 170 showIndicator={hasNew} 171 171 /> 172 172 )}
+12 -12
src/view/com/notifications/NotificationFeedItem.tsx
··· 309 309 other={`${formattedAuthorsCount} others`} 310 310 /> 311 311 </Text>{' '} 312 - liked your post 312 + liked your skeet 313 313 </Trans> 314 314 ) : ( 315 - <Trans>{firstAuthorLink} liked your post</Trans> 315 + <Trans>{firstAuthorLink} liked your skeet</Trans> 316 316 ) 317 317 } else if (item.type === 'repost') { 318 318 a11yLabel = hasMultipleAuthors ··· 333 333 other={`${formattedAuthorsCount} others`} 334 334 /> 335 335 </Text>{' '} 336 - reposted your post 336 + reskeeted your skeet 337 337 </Trans> 338 338 ) : ( 339 - <Trans>{firstAuthorLink} reposted your post</Trans> 339 + <Trans>{firstAuthorLink} reskeeted your skeet</Trans> 340 340 ) 341 341 icon = <RepostIcon size="xl" style={{color: t.palette.positive_500}} /> 342 342 } else if (item.type === 'follow') { ··· 497 497 other={`${formattedAuthorsCount} others`} 498 498 /> 499 499 </Text>{' '} 500 - liked your repost 500 + liked your reskeet 501 501 </Trans> 502 502 ) : ( 503 - <Trans>{firstAuthorLink} liked your repost</Trans> 503 + <Trans>{firstAuthorLink} liked your reskeet</Trans> 504 504 ) 505 505 } else if (item.type === 'repost-via-repost') { 506 506 a11yLabel = hasMultipleAuthors ··· 521 521 other={`${formattedAuthorsCount} others`} 522 522 /> 523 523 </Text>{' '} 524 - reposted your repost 524 + reskeeted your reskeet 525 525 </Trans> 526 526 ) : ( 527 - <Trans>{firstAuthorLink} reposted your repost</Trans> 527 + <Trans>{firstAuthorLink} reskeeted your reskeet</Trans> 528 528 ) 529 529 icon = <RepostIcon size="xl" style={{color: t.palette.positive_500}} /> 530 530 } else if (item.type === 'subscribed-post') { ··· 541 541 ) 542 542 : _( 543 543 msg`New ${plural(postsCount, { 544 - one: 'post', 545 - other: 'posts', 544 + one: 'skeet', 545 + other: 'skeets', 546 546 })} from ${firstAuthorName}`, 547 547 ) 548 548 notificationContent = hasMultipleAuthors ? ( 549 549 <Trans> 550 - New posts from {firstAuthorLink} and{' '} 550 + New skeets from {firstAuthorLink} and{' '} 551 551 <Text style={[a.text_md, a.font_semi_bold, a.leading_snug]}> 552 552 <Plural 553 553 value={additionalAuthorsCount} ··· 558 558 </Trans> 559 559 ) : ( 560 560 <Trans> 561 - New <Plural value={postsCount} one="post" other="posts" /> from{' '} 561 + New <Plural value={postsCount} one="skeet" other="skeets" /> from{' '} 562 562 {firstAuthorLink} 563 563 </Trans> 564 564 )
+2 -2
src/view/com/post-thread/PostRepostedBy.tsx
··· 87 87 isLoading={isLoadingUri || isLoadingRepostedBy} 88 88 isError={isError} 89 89 emptyType="results" 90 - emptyTitle={_(msg`No reposts yet`)} 90 + emptyTitle={_(msg`No reskeets yet`)} 91 91 emptyMessage={_( 92 - msg`Nobody has reposted this yet. Maybe you should be the first!`, 92 + msg`Nobody has reskeeted this yet. Maybe you should be the first!`, 93 93 )} 94 94 errorMessage={cleanError(resolveError || error)} 95 95 sideBorders={false}
+1 -1
src/view/com/posts/DiscoverFallbackHeader.tsx
··· 27 27 <View style={{flex: 1}}> 28 28 <Text type="md" style={pal.text}> 29 29 <Trans> 30 - We ran out of posts from your follows. Here's the latest from{' '} 30 + We ran out of skeets from your follows. Here's the latest from{' '} 31 31 <TextLink 32 32 type="md-medium" 33 33 href="/profile/bsky.app/feed/whats-hot"
+1 -1
src/view/com/posts/PostFeed.tsx
··· 795 795 return ( 796 796 <LoadMoreRetryBtn 797 797 label={_( 798 - msg`There was an issue fetching posts. Tap here to try again.`, 798 + msg`There was an issue fetching skeets. Tap here to try again.`, 799 799 )} 800 800 onPress={onPressRetryLoadMore} 801 801 />
+1 -1
src/view/com/posts/PostFeedErrorMessage.tsx
··· 69 69 return ( 70 70 <EmptyState 71 71 icon="ban" 72 - message={_l(msgLingui`Posts hidden`)} 72 + message={_l(msgLingui`Skeets hidden`)} 73 73 style={{paddingVertical: 40}} 74 74 /> 75 75 )
+1 -1
src/view/com/posts/PostFeedItemCarousel.tsx
··· 60 60 ]}> 61 61 <Text style={[a.text_sm, a.font_bold, t.atoms.text_contrast_medium]}> 62 62 {items.length}{' '} 63 - <Plural value={items.length} one="repost" other="reposts" /> 63 + <Plural value={items.length} one="reskeet" other="reskeets" /> 64 64 </Text> 65 65 <View style={[a.gap_md, a.flex_row, a.align_end]}> 66 66 <Button
+3 -3
src/view/com/posts/PostFeedReason.tsx
··· 74 74 style={styles.includeReason} 75 75 to={makeProfileLink(reason.by)} 76 76 label={ 77 - isOwner ? _(msg`Reposted by you`) : _(msg`Reposted by ${reposter}`) 77 + isOwner ? _(msg`Reskeeted by you`) : _(msg`Reskeeted by ${reposter}`) 78 78 } 79 79 onPress={onOpenReposter}> 80 80 <RepostIcon ··· 86 86 style={[t.atoms.text_contrast_medium, a.font_medium, a.leading_snug]} 87 87 numberOfLines={1}> 88 88 {isOwner ? ( 89 - <Trans>Reposted by you</Trans> 89 + <Trans>Reskeeted by you</Trans> 90 90 ) : ( 91 91 <Trans> 92 - Reposted by{' '} 92 + Reskeeted by{' '} 93 93 <ProfileHoverCard did={reason.by.did}> 94 94 <WebOnlyInlineLinkText 95 95 label={reposter}
+2 -2
src/view/com/profile/ProfileMenu.tsx
··· 304 304 </Menu.Item> 305 305 <Menu.Item 306 306 testID="profileHeaderDropdownSearchBtn" 307 - label={_(msg`Search posts`)} 307 + label={_(msg`Search skeets`)} 308 308 onPress={onPressSearch}> 309 309 <Menu.ItemText> 310 - <Trans>Search posts</Trans> 310 + <Trans>Search skeets</Trans> 311 311 </Menu.ItemText> 312 312 <Menu.ItemIcon icon={SearchIcon} /> 313 313 </Menu.Item>
+1 -1
src/view/screens/ModerationMutedAccounts.tsx
··· 200 200 ]}> 201 201 <Text style={[a.text_center, a.text_sm, t.atoms.text_contrast_high]}> 202 202 <Trans> 203 - Muted accounts have their posts removed from your feed and from your 203 + Muted accounts have their skeets removed from your feed and from your 204 204 notifications. Mutes are completely private. 205 205 </Trans> 206 206 </Text>
+1 -1
src/view/screens/Profile.tsx
··· 222 222 const sectionTitles = [ 223 223 showFiltersTab ? _(msg`Labels`) : undefined, 224 224 showListsTab && hasLabeler ? _(msg`Lists`) : undefined, 225 - showPostsTab ? _(msg`Posts`) : undefined, 225 + showPostsTab ? _(msg`Skeets`) : undefined, 226 226 showRepliesTab ? _(msg`Replies`) : undefined, 227 227 showMediaTab ? _(msg`Media`) : undefined, 228 228 showVideosTab ? _(msg`Videos`) : undefined,
+1 -1
src/view/shell/desktop/LeftNav.tsx
··· 580 580 style={[a.rounded_full]}> 581 581 <ButtonIcon icon={EditBig} position="left" /> 582 582 <ButtonText> 583 - <Trans context="action">New Post</Trans> 583 + <Trans context="action">New Skeet</Trans> 584 584 </ButtonText> 585 585 </Button> 586 586 </View>