diff --git a/src/app/[handle]/[collection]/[rkey]/page.tsx b/src/app/[handle]/[collection]/[rkey]/page.tsx index a3b85e7..2e3b77b 100644 --- a/src/app/[handle]/[collection]/[rkey]/page.tsx +++ b/src/app/[handle]/[collection]/[rkey]/page.tsx @@ -42,7 +42,7 @@ export async function generateMetadata({ params }: Props): Promise { if (!resolvedDid) { return { title: 'Record not found - aturi.to', - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } @@ -258,7 +258,7 @@ export async function generateMetadata({ params }: Props): Promise { return { title: `Record — View on Aturi`, - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } diff --git a/src/app/[handle]/page.tsx b/src/app/[handle]/page.tsx index cc6c0f9..fa8648e 100644 --- a/src/app/[handle]/page.tsx +++ b/src/app/[handle]/page.tsx @@ -28,7 +28,7 @@ export async function generateMetadata({ params }: Props): Promise { if (!resolvedDid) { return { title: 'Profile not found - aturi.to', - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } @@ -77,7 +77,7 @@ export async function generateMetadata({ params }: Props): Promise { return { title: `@${handle} - aturi.to`, - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } diff --git a/src/app/api/og/list/route.tsx b/src/app/api/og/list/route.tsx index c5e6e3f..6411047 100644 --- a/src/app/api/og/list/route.tsx +++ b/src/app/api/og/list/route.tsx @@ -91,7 +91,7 @@ export async function GET(request: NextRequest) { const creatorAvatarDataUrl = await fetchImageAsDataUrl(creatorAvatarUrl); // Load Crimson Pro font - const allText = `${listName} ${truncatedDescription} ${creatorName} @${creatorHandle} aturi.to Atmosphere Fast Travel`; + const allText = `${listName} ${truncatedDescription} ${creatorName} @${creatorHandle} aturi.to Atmosphere Toolkit`; const fontData = await loadGoogleFont('Crimson+Pro:wght@300;400;600', allText); return new ImageResponse( @@ -160,7 +160,7 @@ export async function GET(request: NextRequest) { display: 'flex', }} > - Atmosphere Fast Travel + Atmosphere Toolkit diff --git a/src/app/api/og/post/route.tsx b/src/app/api/og/post/route.tsx index f02f2fc..6c5d82b 100644 --- a/src/app/api/og/post/route.tsx +++ b/src/app/api/og/post/route.tsx @@ -172,7 +172,7 @@ export async function GET(request: NextRequest) { // Load Crimson Pro font console.log('[OG Post] Loading font...'); - const allText = `${displayName} @${handleName} ${truncatedText} ${likeCount} ${replyCount} ${repostCount} ${embedQuoteAuthor || ''} ${embedQuoteText || ''} ${embedExternalTitle || ''} Choose where to view this post aturi.to Atmosphere Fast Travel Image Video Link Quote`; + const allText = `${displayName} @${handleName} ${truncatedText} ${likeCount} ${replyCount} ${repostCount} ${embedQuoteAuthor || ''} ${embedQuoteText || ''} ${embedExternalTitle || ''} Choose where to view this post aturi.to Atmosphere Toolkit Image Video Link Quote`; const fontData = await loadGoogleFont('Crimson+Pro:wght@300;400;600', allText); console.log('[OG Post] Font loaded successfully'); @@ -243,7 +243,7 @@ export async function GET(request: NextRequest) { display: 'flex', }} > - Atmosphere Fast Travel + Atmosphere Toolkit diff --git a/src/app/api/og/profile/route.tsx b/src/app/api/og/profile/route.tsx index f6ae786..a4efcae 100644 --- a/src/app/api/og/profile/route.tsx +++ b/src/app/api/og/profile/route.tsx @@ -118,7 +118,7 @@ export async function GET(request: NextRequest) { const posts = profileData?.postsCount || 0; // Load Crimson Pro font - const allText = `${displayName} @${handleName} ${displayBio} ${isTruncated ? '...' : ''} ${followers.toLocaleString()} followers ${following.toLocaleString()} following ${posts.toLocaleString()} posts aturi.to Atmosphere Fast Travel Choose where to view this profile`; + const allText = `${displayName} @${handleName} ${displayBio} ${isTruncated ? '...' : ''} ${followers.toLocaleString()} followers ${following.toLocaleString()} following ${posts.toLocaleString()} posts aturi.to Atmosphere Toolkit Choose where to view this profile`; const fontData = await loadGoogleFont('Crimson+Pro:wght@300;400;600', allText); return new ImageResponse( @@ -187,7 +187,7 @@ export async function GET(request: NextRequest) { display: 'flex', }} > - Atmosphere Fast Travel + Atmosphere Toolkit diff --git a/src/app/api/og/static/route.tsx b/src/app/api/og/static/route.tsx index 761ae95..7689445 100644 --- a/src/app/api/og/static/route.tsx +++ b/src/app/api/og/static/route.tsx @@ -47,10 +47,16 @@ export async function GET(request: NextRequest) { const pageContent: Record = { home: { title: 'aturi.to', - subtitle: 'Fast travel across the Atmosphere', - tagline: 'Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links.', + subtitle: 'Your toolkit for the Atmosphere', + tagline: 'Travel between apps, share universal links, and explore raw PDS data.', showBranding: false, // Home already shows aturi.to as main title }, + explore: { + title: 'Atmosphere Explorer', + subtitle: "Browse any account's PDS", + tagline: 'Records, identity, backlinks, and a live view of the firehose.', + showBranding: true, + }, create: { title: 'Create Link', subtitle: 'Turn any Atmosphere URL into a universal link', @@ -74,7 +80,7 @@ export async function GET(request: NextRequest) { const content = pageContent[page] || pageContent.home; // Load Crimson Pro font - const allText = `${content.title} ${content.subtitle} ${content.tagline} aturi.to Atmosphere Fast Travel`; + const allText = `${content.title} ${content.subtitle} ${content.tagline} aturi.to Atmosphere Toolkit`; const fontData = await loadGoogleFont('Crimson+Pro:wght@300;400;600', allText); return new ImageResponse( @@ -287,7 +293,7 @@ export async function GET(request: NextRequest) { display: 'flex', }} > - Atmosphere Fast Travel + Atmosphere Toolkit )} diff --git a/src/app/explore/layout.tsx b/src/app/explore/layout.tsx index 7b1fc5f..25ee33d 100644 --- a/src/app/explore/layout.tsx +++ b/src/app/explore/layout.tsx @@ -1,7 +1,6 @@ 'use client'; import type { ReactNode } from 'react'; -import Link from 'next/link'; import { AtprotoSessionProvider } from '@/components/explore/AtprotoSessionProvider'; import Header from '@/components/Header'; import SessionBadge from '@/components/explore/SessionBadge'; @@ -9,46 +8,30 @@ import SessionBadge from '@/components/explore/SessionBadge'; export default function ExploreLayout({ children }: { children: ReactNode }) { return ( -
-
-
-
-
- - aturi · - explore the atmosphere - - -
+
+
+ {children}
); } + +/** + * Thin one-line strip beneath the compact header. Only renders when the + * user is signed in (SessionBadge handles the empty case internally). + */ +function SessionStrip() { + return ( +
+ +
+ ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 97d77fd..66ab48f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -7,20 +7,20 @@ import { DEFAULT_THEME, THEME_INIT_SCRIPT } from "@/lib/theme"; import "./globals.css"; export const metadata: Metadata = { - title: "aturi.to - Fast travel across the Atmosphere", - description: "Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links.", + title: "aturi.to - Your toolkit for the Atmosphere", + description: "Travel between apps with the browser extension, share universal Atmosphere links, and explore any account's raw PDS data.", metadataBase: new URL('https://aturi.to'), manifest: '/site.webmanifest', openGraph: { - title: "aturi.to - Fast travel across the Atmosphere", - description: "Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links.", + title: "aturi.to - Your toolkit for the Atmosphere", + description: "Travel between apps with the browser extension, share universal Atmosphere links, and explore any account's raw PDS data.", type: "website", images: ['/api/og/static?page=home'], }, twitter: { card: "summary_large_image", - title: "aturi.to - Fast travel across the Atmosphere", - description: "Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links.", + title: "aturi.to - Your toolkit for the Atmosphere", + description: "Travel between apps with the browser extension, share universal Atmosphere links, and explore any account's raw PDS data.", images: ['/api/og/static?page=home'], }, }; diff --git a/src/app/profile/[handle]/post/[rkey]/page.tsx b/src/app/profile/[handle]/post/[rkey]/page.tsx index 07c7a4a..54e8216 100644 --- a/src/app/profile/[handle]/post/[rkey]/page.tsx +++ b/src/app/profile/[handle]/post/[rkey]/page.tsx @@ -31,7 +31,7 @@ export async function generateMetadata({ params }: Props): Promise { if (!resolvedDid) { return { title: 'Post not found - aturi.to', - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } @@ -142,7 +142,7 @@ export async function generateMetadata({ params }: Props): Promise { return { title: `Post — View on Aturi`, - description: 'Fast travel across the Atmosphere', + description: 'Your toolkit for the Atmosphere', }; } diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 4b48c21..5d8e9ac 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -2,7 +2,7 @@ import { useState, useEffect, useRef } from 'react'; import Link from 'next/link'; -import { Home, Link2, Leaf, UserPlus } from 'lucide-react'; +import { Home, Link2, Leaf, UserPlus, Telescope } from 'lucide-react'; import { motion } from 'framer-motion'; import ThemeToggle from './ThemeToggle'; @@ -105,7 +105,7 @@ export default function Header({ simple = false, compact = false }: HeaderProps) textOverflow: 'ellipsis', }} > - atmosphere fast travel + travel & explore the atmosphere @@ -163,6 +163,10 @@ export default function Header({ simple = false, compact = false }: HeaderProps) about + + + explore + create link @@ -231,7 +235,7 @@ export default function Header({ simple = false, compact = false }: HeaderProps) marginBottom: '2rem', }} > - Fast travel across the Atmosphere + Travel and explore the Atmosphere

{/* Organic Navigation */} @@ -251,6 +255,11 @@ export default function Header({ simple = false, compact = false }: HeaderProps) about · + + + explore + + · create @@ -317,7 +326,7 @@ export default function Header({ simple = false, compact = false }: HeaderProps) fontWeight: 300, }} > - Fast travel across the Atmosphere + Travel and explore the Atmosphere - Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links. + Switch between apps, share universal links, and walk any account’s raw PDS data — your toolkit for the Atmosphere. {/* Organic Navigation */} @@ -351,6 +360,11 @@ export default function Header({ simple = false, compact = false }: HeaderProps) about · + + + explore + + · create diff --git a/src/components/WaypointPicker.tsx b/src/components/WaypointPicker.tsx index 7fea73d..dc51fc2 100644 --- a/src/components/WaypointPicker.tsx +++ b/src/components/WaypointPicker.tsx @@ -368,10 +368,10 @@ export default function WaypointPicker({ What is aturi.to?

- Fast travel across the Atmosphere. + Your toolkit for the Atmosphere.

- Switch between apps, auto-redirect to preferred clients, and share universal Atmosphere links. + Switch between apps, share universal links, and explore any account’s raw PDS data.