fix: consistent page titles (text-xl), always show Bluesky avatar on profile
Author: Aaron Steven White
Commit
6b15e701a35f31c732f087fd00c2806a572a89b9Parent: 437bc10ad8
Structural diff unavailable
These commits were pushed via plain git push, so no pre-parsed
schemas are available. Install git-remote-cospan and re-push via panproto:// to
see scope-level changes, breaking change detection, and semantic diffs.
brew install panproto/tap/git-remote-cospan10 files changed +41 -19
@@ -22,3 +22,12 @@ body {
2222 color: var(--color-text-primary); 2323 font-family: var(--font-sans); 2424 } 25+ 26+/* Hide scrollbar for horizontal scroll areas while keeping scroll behavior */ 27+.scrollbar-none { 28+ -ms-overflow-style: none; 29+ scrollbar-width: none; 30+} 31+.scrollbar-none::-webkit-scrollbar { 32+ display: none; 33+}
@@ -22,7 +22,7 @@
2222 </svelte:head> 2323 2424 <section> 25- <h1 class="mb-2 text-2xl font-semibold text-text-primary">Explore</h1> 25+ <h1 class="mb-2 text-xl font-semibold text-text-primary">Explore</h1> 2626 <p class="mb-6 text-sm text-text-secondary"> 2727 Discover repositories across protocols on the AT Protocol network. 2828 </p>
@@ -67,7 +67,7 @@
6767 6868 {#if data.trending.items.length === 0} 6969 <p class="py-8 text-center text-sm text-text-secondary"> 70- {activeProtocol ? `No ${activeProtocol} repositories found.` : 'No repositories yet. Be the first to create one.'} 70+ {activeProtocol ? `No ${activeProtocol} repositories found.` : 'No repositories yet.'} 7171 </p> 7272 {:else} 7373 <div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
@@ -25,15 +25,23 @@ async function fetchBlueskyProfile(did: string) {
2525 } 2626 2727 export const load: PageServerLoad = async ({ params }) => { 28- // Try Cospan profile first, fall back to Bluesky public API 29- let profile = null; 28+ // Always fetch Bluesky profile for avatar and social stats 29+ const bskyProfile = await fetchBlueskyProfile(params.did); 30+ 31+ // Try Cospan profile for any Cospan-specific fields 32+ let cospanProfile = null; 3033 try { 31- profile = await getProfile({ did: params.did }); 34+ cospanProfile = await getProfile({ did: params.did }); 3235 } catch {} 3336 34- if (!profile) { 35- profile = await fetchBlueskyProfile(params.did); 36- } 37+ // Merge: Bluesky provides avatar/stats, Cospan overrides if it has data 38+ const profile = bskyProfile 39+ ? { 40+ ...bskyProfile, 41+ ...(cospanProfile?.displayName ? { displayName: cospanProfile.displayName } : {}), 42+ ...(cospanProfile?.description ? { description: cospanProfile.description } : {}), 43+ } 44+ : cospanProfile; 3745 3846 let repos = { items: [] as any[], cursor: null as string | null }; 3947 try {
@@ -2,6 +2,7 @@
22 import { goto } from '$app/navigation'; 33 import { getAuth } from '$lib/stores/auth.svelte'; 44 import Breadcrumb from '$lib/components/shared/Breadcrumb.svelte'; 5+ import BackLink from '$lib/components/shared/BackLink.svelte'; 56 67 let { data } = $props(); 78
@@ -117,4 +118,6 @@
117118 </button> 118119 </div> 119120 </div> 121+ 122+ <BackLink href="/{data.did}/{data.repoName}" /> 120123 </section>
@@ -3,6 +3,7 @@
33 import { goto } from '$app/navigation'; 44 import { getAuth } from '$lib/stores/auth.svelte'; 55 import Breadcrumb from '$lib/components/shared/Breadcrumb.svelte'; 6+ import BackLink from '$lib/components/shared/BackLink.svelte'; 67 78 let auth = $derived(getAuth()); 89 let did = $derived($page.params.did);
@@ -108,4 +109,6 @@
108109 </div> 109110 </form> 110111 {/if} 112+ 113+ <BackLink href="{basePath}/issues" label="Back to issues" /> 111114 </section>