--- a/src/lib/constants.ts	2026-03-22 15:48:51
+++ b/src/lib/constants.ts	2026-03-22 15:48:23
@@ -7,12 +7,12 @@
 export const LOCAL_DEV_SERVICE =
   Platform.OS === 'android' ? 'http://10.0.2.2:2583' : 'http://localhost:2583'
 export const STAGING_SERVICE = 'https://staging.bsky.dev'
-export const BSKY_SERVICE = 'https://bsky.social'
-export const BSKY_SERVICE_DID = 'did:web:bsky.social'
-export const PUBLIC_BSKY_SERVICE = 'https://public.api.bsky.app'
+export const BSKY_SERVICE = 'https://syu.is'
+export const BSKY_SERVICE_DID = 'did:web:syu.is'
+export const PUBLIC_BSKY_SERVICE = 'https://bsky.syu.is'
 export const DEFAULT_SERVICE = BSKY_SERVICE
-const HELP_DESK_LANG = 'en-us'
-export const HELP_DESK_URL = `https://blueskyweb.zendesk.com/hc/${HELP_DESK_LANG}`
+const HELP_DESK_LANG = 'ja-jp'
+export const HELP_DESK_URL = '/support/license'
 export const EMBED_SERVICE = 'https://embed.bsky.app'
 export const EMBED_SCRIPT = `${EMBED_SERVICE}/static/embed.js`
 export const BSKY_DOWNLOAD_URL = 'https://bsky.app/download'
@@ -81,19 +81,17 @@
 }
 
 export const PROD_DEFAULT_FEED = (rkey: string) =>
-  `at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/${rkey}`
+  `at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/${rkey}`
 
 export const STAGING_DEFAULT_FEED = (rkey: string) =>
   `at://did:plc:yofh3kx63drvfljkibw5zuxo/app.bsky.feed.generator/${rkey}`
 
 export const PROD_FEEDS = [
-  `feedgen|${PROD_DEFAULT_FEED('whats-hot')}`,
-  `feedgen|${PROD_DEFAULT_FEED('thevids')}`,
+  `feedgen|${PROD_DEFAULT_FEED('app')}`,
 ]
 
 export const STAGING_FEEDS = [
-  `feedgen|${STAGING_DEFAULT_FEED('whats-hot')}`,
-  `feedgen|${STAGING_DEFAULT_FEED('thevids')}`,
+  `feedgen|${STAGING_DEFAULT_FEED('app')}`,
 ]
 
 export const POST_IMG_MAX = {
@@ -131,7 +129,7 @@
 export const BACK_HITSLOP = HITSLOP_30
 export const MAX_POST_LINES = 25
 
-export const BSKY_APP_ACCOUNT_DID = 'did:plc:z72i7hdynmk6r22z27h6tvur'
+export const BSKY_APP_ACCOUNT_DID = 'did:plc:6qyecktefllvenje24fcxnie'
 
 export const BSKY_FEED_OWNER_DIDS = [
   BSKY_APP_ACCOUNT_DID,
@@ -140,7 +138,7 @@
 ]
 
 export const DISCOVER_FEED_URI =
-  'at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot'
+  'at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/app'
 export const VIDEO_FEED_URI =
   'at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/thevids'
 export const STAGING_VIDEO_FEED_URI =
@@ -217,10 +215,43 @@
   },
 }
 
-export const PUBLIC_APPVIEW = 'https://api.bsky.app'
-export const PUBLIC_APPVIEW_DID = 'did:web:api.bsky.app'
+export const PUBLIC_APPVIEW = 'https://bsky.syu.is'
+export const PUBLIC_APPVIEW_DID = 'did:web:bsky.syu.is'
 export const PUBLIC_STAGING_APPVIEW_DID = 'did:web:api.staging.bsky.dev'
 
+// Official Bluesky appview DID (for non-self-hosted accounts)
+export const OFFICIAL_APPVIEW_DID = 'did:web:api.bsky.app'
+export const OFFICIAL_CHAT_DID = 'did:web:api.bsky.chat'
+
+export function isSelfHostedService(url?: string) {
+  return !!url?.includes('syu.is')
+}
+
+export function getAppviewDid(serviceUrl?: string) {
+  return isSelfHostedService(serviceUrl)
+    ? PUBLIC_APPVIEW_DID
+    : OFFICIAL_APPVIEW_DID
+}
+
+export function getProxyHeader(serviceUrl?: string): ProxyHeaderValue {
+  return `${getAppviewDid(serviceUrl)}#bsky_appview` as ProxyHeaderValue
+}
+
+export function getNotifServiceHeaders(serviceUrl?: string) {
+  return {
+    'atproto-proxy': `${getAppviewDid(serviceUrl)}#bsky_notif`,
+  }
+}
+
+export function getDmServiceHeaders(serviceUrl?: string) {
+  const chatDid = isSelfHostedService(serviceUrl)
+    ? PUBLIC_APPVIEW_DID
+    : OFFICIAL_CHAT_DID
+  return {
+    'atproto-proxy': `${chatDid}#bsky_chat`,
+  }
+}
+
 export const DEV_ENV_APPVIEW = `http://localhost:2584` // always the same
 export const DEV_ENV_APPVIEW_DID = `did:plc:dw4kbjf5mn7nhenabiqpkyh3` // always the same
 
@@ -235,10 +266,16 @@
   },
 }
 
-export const DM_SERVICE_HEADERS = {
-  'atproto-proxy': `${CHAT_PROXY_DID}#bsky_chat`,
+export const DM_SERVICE_HEADERS: {'atproto-proxy': string} = {
+  'atproto-proxy': `${OFFICIAL_CHAT_DID}#bsky_chat`,
 }
 
+export function updateDmServiceHeaders(serviceUrl?: string) {
+  DM_SERVICE_HEADERS['atproto-proxy'] = isSelfHostedService(serviceUrl)
+    ? `${PUBLIC_APPVIEW_DID}#bsky_chat`
+    : `${OFFICIAL_CHAT_DID}#bsky_chat`
+}
+
 export const BLUESKY_MOD_SERVICE_HEADERS = {
   'atproto-proxy': `${BSKY_LABELER_DID}#atproto_labeler`,
 }
@@ -248,8 +285,8 @@
 }
 
 export const webLinks = {
-  tos: `https://bsky.social/about/support/tos`,
-  privacy: `https://bsky.social/about/support/privacy-policy`,
+  tos: `/support/tos`,
+  privacy: `/support/privacy-policy`,
   community: `https://bsky.social/about/support/community-guidelines`,
   communityDeprecated: `https://bsky.social/about/support/community-guidelines-deprecated`,
 }
--- a/src/lib/api/feed/home.ts
+++ b/src/lib/api/feed/home.ts
@@ -45,7 +45,7 @@ export class HomeFeedAPI implements FeedAPI {
     this.following = new FollowingFeedAPI({agent})
     this.discover = new CustomFeedAPI({
       agent,
-      feedParams: {feed: PROD_DEFAULT_FEED('whats-hot')},
+      feedParams: {feed: PROD_DEFAULT_FEED('app')},
     })
     this.userInterests = userInterests
   }
@@ -54,7 +54,7 @@ export class HomeFeedAPI implements FeedAPI {
     this.following = new FollowingFeedAPI({agent: this.agent})
     this.discover = new CustomFeedAPI({
       agent: this.agent,
-      feedParams: {feed: PROD_DEFAULT_FEED('whats-hot')},
+      feedParams: {feed: PROD_DEFAULT_FEED('app')},
       userInterests: this.userInterests,
     })
     this.usingDiscover = false
diff --git a/src/lib/demo.ts b/src/lib/demo.ts
index 5ead62c9d..7c80dfe15 100644
--- a/src/lib/demo.ts
+++ b/src/lib/demo.ts
@@ -1,7 +1,7 @@
 import {type AppBskyFeedGetFeed} from '@atproto/api'
 import {subDays, subMinutes} from 'date-fns'
 
-const DID = `did:plc:z72i7hdynmk6r22z27h6tvur`
+const DID = `did:plc:6qyecktefllvenje24fcxnie`
 const NOW = new Date()
 const POST_1_DATE = subMinutes(NOW, 2).toISOString()
 const POST_2_DATE = subMinutes(NOW, 4).toISOString()
diff --git a/src/lib/strings/url-helpers.ts b/src/lib/strings/url-helpers.ts
index 6088e2806..0f6787a4d 100644
--- a/src/lib/strings/url-helpers.ts
+++ b/src/lib/strings/url-helpers.ts
@@ -53,7 +53,7 @@ export function toNiceDomain(url: string): string {
   try {
     const urlp = new URL(url)
     if (`https://${urlp.host}` === BSKY_SERVICE) {
-      return 'Bluesky Social'
+      return 'syu.is'
     }
     return urlp.host ? urlp.host : url
   } catch (e) {
@@ -338,7 +338,7 @@ export function createProxiedUrl(url: string): string {
     return url
   }
 
-  return `https://go.bsky.app/redirect?u=${encodeURIComponent(url)}`
+  return url
 }
 
 export function isShortLink(url: string): boolean {
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index de1e92533..3d1566800 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -201,14 +201,6 @@ export function useFeedSourceInfoQuery({uri}: {uri: string}) {
 // for the ones we know need it
 // -prf
 export const KNOWN_AUTHED_ONLY_FEEDS = [
-  'at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/with-friends', // popular with friends, by bsky.app
-  'at://did:plc:tenurhgjptubkk5zf5qhi3og/app.bsky.feed.generator/mutuals', // mutuals, by skyfeed
-  'at://did:plc:tenurhgjptubkk5zf5qhi3og/app.bsky.feed.generator/only-posts', // only posts, by skyfeed
-  'at://did:plc:wzsilnxf24ehtmmc3gssy5bu/app.bsky.feed.generator/mentions', // mentions, by flicknow
-  'at://did:plc:q6gjnaw2blty4crticxkmujt/app.bsky.feed.generator/bangers', // my bangers, by jaz
-  'at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/mutuals', // mutuals, by bluesky
-  'at://did:plc:q6gjnaw2blty4crticxkmujt/app.bsky.feed.generator/my-followers', // followers, by jaz
-  'at://did:plc:vpkhqolt662uhesyj6nxm7ys/app.bsky.feed.generator/followpics', // the gram, by why
 ]

 type GetPopularFeedsOptions = {limit?: number; enabled?: boolean}
diff --git a/src/state/queries/preferences/index.ts b/src/state/queries/preferences/index.ts
index 0cf6ab546..399e592bc 100644
--- a/src/state/queries/preferences/index.ts
+++ b/src/state/queries/preferences/index.ts
@@ -270,7 +270,7 @@ export function useReplaceForYouWithDiscoverFeedMutation() {
         await agent.addSavedFeeds([
           {
             type: 'feed',
-            value: PROD_DEFAULT_FEED('whats-hot'),
+            value: PROD_DEFAULT_FEED('app'),
             pinned: true,
           },
         ])
diff --git a/src/view/com/posts/FeedShutdownMsg.tsx b/src/view/com/posts/FeedShutdownMsg.tsx
index 620382175..928480da2 100644
--- a/src/view/com/posts/FeedShutdownMsg.tsx
+++ b/src/view/com/posts/FeedShutdownMsg.tsx
@@ -32,7 +32,7 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
     f => f.value === feedUri && f.pinned,
   )
   const discoverFeedConfig = preferences?.savedFeeds?.find(
-    f => f.value === PROD_DEFAULT_FEED('whats-hot'),
+    f => f.value === PROD_DEFAULT_FEED('app'),
   )
   const hasFeedPinned = Boolean(feedConfig)
   const hasDiscoverPinned = Boolean(discoverFeedConfig?.pinned)
@@ -44,7 +44,7 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
         Toast.show(_(msg`Removed from your feeds`))
       }
       if (hasDiscoverPinned) {
-        setSelectedFeed(`feedgen|${PROD_DEFAULT_FEED('whats-hot')}`)
+        setSelectedFeed(`feedgen|${PROD_DEFAULT_FEED('app')}`)
       }
     } catch (err: any) {
       Toast.show(
@@ -63,7 +63,7 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
         forYouFeedConfig: feedConfig,
         discoverFeedConfig,
       })
-      setSelectedFeed(`feedgen|${PROD_DEFAULT_FEED('whats-hot')}`)
+      setSelectedFeed(`feedgen|${PROD_DEFAULT_FEED('app')}`)
       Toast.show(_(msg`The feed has been replaced with Discover.`))
     } catch (err: any) {
       Toast.show(
@@ -100,7 +100,7 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
           This feed is no longer online. We are showing{' '}
           <InlineLinkText
             label={_(msg`The Discover feed`)}
-            to="/profile/bsky.app/feed/whats-hot"
+            to="/profile/did:plc:6qyecktefllvenje24fcxnie/feed/app"
             style={[a.text_md]}>
             Discover
           </InlineLinkText>{' '}

