diff --git a/ios/assets/splash/illustration-mobile-dark.png b/ios/assets/splash/illustration-mobile-dark.png new file mode 100644 index 0000000..ca4b76b Binary files /dev/null and b/ios/assets/splash/illustration-mobile-dark.png differ diff --git a/ios/assets/splash/illustration-mobile.png b/ios/assets/splash/illustration-mobile.png new file mode 100644 index 0000000..02e00a2 Binary files /dev/null and b/ios/assets/splash/illustration-mobile.png differ diff --git a/ios/patching/038-social-app-ios-profile-services.patch b/ios/patching/038-social-app-ios-profile-services.patch index a29a5ee..2586a8f 100644 --- a/ios/patching/038-social-app-ios-profile-services.patch +++ b/ios/patching/038-social-app-ios-profile-services.patch @@ -1,29 +1,25 @@ -diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/Profile/Header/ProfileHeaderStandard.tsx ---- a/src/screens/Profile/Header/ProfileHeaderStandard.tsx -+++ b/src/screens/Profile/Header/ProfileHeaderStandard.tsx -@@ -1,25 +1,27 @@ +--- a/src/screens/Profile/Header/ProfileHeaderStandard.tsx 2026-02-16 03:00:07 ++++ b/src/screens/Profile/Header/ProfileHeaderStandard.tsx 2026-02-16 03:02:25 +@@ -1,5 +1,5 @@ import {memo, useMemo, useState} from 'react' -import {View} from 'react-native' +import {Image, Pressable, View} from 'react-native' import { type AppBskyActorDefs, moderateProfile, - type ModerationDecision, - type ModerationOpts, - type RichText as RichTextAPI, +@@ -9,9 +9,11 @@ } from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {useQuery} from '@tanstack/react-query' - + import {useActorStatus} from '#/lib/actor-status' import {useHaptics} from '#/lib/haptics' +import {useOpenLink} from '#/lib/hooks/useOpenLink' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {logger} from '#/logger' - import {type Shadow, useProfileShadow} from '#/state/cache/profile-shadow' - import { +@@ -20,7 +22,7 @@ useProfileBlockMutationQueue, useProfileFollowMutationQueue, } from '#/state/queries/profile' @@ -31,10 +27,12 @@ diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/ +import {useAgent, useRequireAuth, useSession} from '#/state/session' import {ProfileMenu} from '#/view/com/profile/ProfileMenu' import {atoms as a, platform, useBreakpoints, useTheme} from '#/alf' -@@ -45,6 +47,71 @@ + import {SubscribeProfileButton} from '#/components/activity-notifications/SubscribeProfileButton' +@@ -45,6 +47,83 @@ + import {ProfileHeaderMetrics} from './Metrics' import {ProfileHeaderShell} from './Shell' - import {AnimatedProfileHeaderSuggestedFollows} from './SuggestedFollows' - + import {ProfileHeaderSuggestedFollows} from './SuggestedFollows' ++ +const SERVICE_FAVICONS: Record = { + 'syui.ai': require('../../../../assets/favicons/syui.ai.png'), + 'bsky.app': require('../../../../assets/favicons/bsky.app.png'), @@ -78,20 +76,32 @@ diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/ + key={service} + onPress={() => + openLink( -+ `https://syui.ai/@${profile.handle}/at/service/${service}`, ++ `https://at.syu.is/@${profile.handle}/at/service/${service}`, + ) + } -+ style={[a.flex_row, a.align_center, a.gap_xs]}> ++ style={[ ++ a.flex_row, ++ a.align_center, ++ a.gap_xs, ++ a.rounded_full, ++ t.atoms.bg_contrast_50, ++ {paddingVertical: 6, paddingHorizontal: 10}, ++ ]}> + -+ ++ + {service} + + @@ -99,11 +109,10 @@ diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/ + + ) +} -+ + interface Props { profile: AppBskyActorDefs.ProfileViewDetailed - descriptionRT: RichTextAPI | null -@@ -150,6 +217,7 @@ +@@ -151,6 +230,7 @@ {!isPlaceholderProfile && !isBlockedUser && ( diff --git a/ios/patching/040-social-app-ios-hide-composer-prompt.patch b/ios/patching/040-social-app-ios-hide-composer-prompt.patch new file mode 100644 index 0000000..bf2822b --- /dev/null +++ b/ios/patching/040-social-app-ios-hide-composer-prompt.patch @@ -0,0 +1,50 @@ +--- a/src/view/com/posts/PostFeed.tsx 2026-02-16 02:19:59 ++++ b/src/view/com/posts/PostFeed.tsx 2026-02-16 02:20:13 +@@ -519,16 +519,17 @@ + key: 'liveEventFeedsAndTrendingBanner-' + sliceIndex, + }) + // Show composer prompt for Discover and Following feeds +- if ( +- hasSession && +- (feedUriOrActorDid === DISCOVER_FEED_URI || +- feed === 'following') +- ) { +- arr.push({ +- type: 'composerPrompt', +- key: 'composerPrompt-' + sliceIndex, +- }) +- } ++ // Disabled: hide composer prompt ++ // if ( ++ // hasSession && ++ // (feedUriOrActorDid === DISCOVER_FEED_URI || ++ // feed === 'following') ++ // ) { ++ // arr.push({ ++ // type: 'composerPrompt', ++ // key: 'composerPrompt-' + sliceIndex, ++ // }) ++ // } + } else if (sliceIndex === 15) { + if (areVideoFeedsEnabled && !trendingVideoDisabled) { + arr.push({ +@@ -545,12 +546,13 @@ + } else if (feedKind === 'following') { + if (sliceIndex === 0) { + // Show composer prompt for Following feed +- if (hasSession) { +- arr.push({ +- type: 'composerPrompt', +- key: 'composerPrompt-' + sliceIndex, +- }) +- } ++ // Disabled: hide composer prompt ++ // if (hasSession) { ++ // arr.push({ ++ // type: 'composerPrompt', ++ // key: 'composerPrompt-' + sliceIndex, ++ // }) ++ // } + } + } else if (feedKind === 'profile') { + if (sliceIndex === 5) { diff --git a/ios/patching/041-social-app-ios-splash-signin-button.patch b/ios/patching/041-social-app-ios-splash-signin-button.patch new file mode 100644 index 0000000..9d849c1 --- /dev/null +++ b/ios/patching/041-social-app-ios-splash-signin-button.patch @@ -0,0 +1,14 @@ +--- a/src/view/com/auth/SplashScreen.tsx 2026-02-16 02:55:08 ++++ b/src/view/com/auth/SplashScreen.tsx 2026-02-16 02:55:16 +@@ -118,8 +118,9 @@ + accessibilityHint={_( + msg`Opens flow to sign in to your existing Bluesky account`, + )} +- size="large"> +- ++ size="large" ++ color="primary"> ++ + Sign in + + diff --git a/ios/setup.zsh b/ios/setup.zsh index bbf94f4..5cbcbc0 100755 --- a/ios/setup.zsh +++ b/ios/setup.zsh @@ -47,6 +47,8 @@ PATCH_FILES_IOS=( "037-social-app-ios-disable-contacts-nux.patch" "038-social-app-ios-profile-services.patch" "039-social-app-ios-hide-feed-controls.patch" + "040-social-app-ios-hide-composer-prompt.patch" + "041-social-app-ios-splash-signin-button.patch" ) function ios-env() {