my website at ewancroft.uk
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

Replace bsky.app URLs with witchsky.app across all components

Update all Bluesky profile, post, mention, and hashtag URLs to use
witchsky.app domain instead of bsky.app. Changes affect Footer,
BlueskyPostCard, ProfileCard components and url utility functions.

+8 -8
+1 -1
src/lib/components/layout/Footer.svelte
··· 64 64 <span role="status" aria-live="polite">Loading profile…</span> 65 65 {:else if profile} 66 66 <a 67 - href="https://bsky.app/profile/{profile.did}" 67 + href="https://witchsky.app/profile/{profile.did}" 68 68 class="underline hover:text-primary-500 focus-visible:text-primary-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600 dark:hover:text-primary-400 dark:focus-visible:text-primary-400" 69 69 target="_blank" 70 70 rel="noopener noreferrer"
+4 -4
src/lib/components/layout/main/card/BlueskyPostCard.svelte
··· 76 76 const parts = uri.split('/'); 77 77 const did = parts[2]; 78 78 const rkey = parts[4]; 79 - return `https://bsky.app/profile/${did}/post/${rkey}`; 79 + return `https://witchsky.app/profile/${did}/post/${rkey}`; 80 80 } 81 81 82 82 function getProfileUrl(handle: string): string { 83 - return `https://bsky.app/profile/${handle}`; 83 + return `https://witchsky.app/profile/${handle}`; 84 84 } 85 85 86 86 function openLightbox(url: string, alt: string) { ··· 123 123 if (feature.$type === 'app.bsky.richtext.facet#link') { 124 124 result += `<a href="${escapeHtml(feature.uri)}" target="_blank" rel="noopener noreferrer" class="text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 underline">${escapeHtml(facetText)}</a>`; 125 125 } else if (feature.$type === 'app.bsky.richtext.facet#mention') { 126 - result += `<a href="https://bsky.app/profile/${escapeHtml(feature.did)}" target="_blank" rel="noopener noreferrer" class="text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 font-medium">${escapeHtml(facetText)}</a>`; 126 + result += `<a href="https://witchsky.app/profile/${escapeHtml(feature.did)}" target="_blank" rel="noopener noreferrer" class="text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 font-medium">${escapeHtml(facetText)}</a>`; 127 127 } else if (feature.$type === 'app.bsky.richtext.facet#tag') { 128 - result += `<a href="https://bsky.app/hashtag/${escapeHtml(feature.tag)}" target="_blank" rel="noopener noreferrer" class="text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 font-medium">${escapeHtml(facetText)}</a>`; 128 + result += `<a href="https://witchsky.app/hashtag/${escapeHtml(feature.tag)}" target="_blank" rel="noopener noreferrer" class="text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 font-medium">${escapeHtml(facetText)}</a>`; 129 129 } else { 130 130 result += escapeHtml(facetText); 131 131 }
+1 -1
src/lib/components/layout/main/card/ProfileCard.svelte
··· 137 137 138 138 <div class="mt-4"> 139 139 <LinkCard 140 - url="https://bsky.app/profile/{safeProfile.did}" 140 + url="https://witchsky.app/profile/{safeProfile.did}" 141 141 title="View on Bluesky" 142 142 variant="button" 143 143 />
+2 -2
src/lib/utils/url.ts
··· 25 25 const parts = uri.split('/'); 26 26 const did = parts[2]; 27 27 const rkey = parts[4]; 28 - return `https://bsky.app/profile/${did}/post/${rkey}`; 28 + return `https://witchsky.app/profile/${did}/post/${rkey}`; 29 29 } 30 30 31 31 /** ··· 34 34 * @returns Bluesky profile URL 35 35 */ 36 36 export function getBlueskyProfileUrl(actor: string): string { 37 - return `https://bsky.app/profile/${actor}`; 37 + return `https://witchsky.app/profile/${actor}`; 38 38 } 39 39 40 40 /**