Rename Feed settings to Home Feed, clarify labels, conditionally show community

- Rename 'Feed' to 'Home Feed' in settings hub, page header, and SEO title
- Rename 'Notes' section to 'Basic Home Feed Options'
- Rename 'Other Stuff' to 'Show More Content Types in Home Feed'
- Rename 'Reposts' to 'Reposted Notes', 'Generic Reposts' to 'Reposted Other Content'
- Only show community domain management when community feed toggle is on
This commit is contained in:
Mary Kate Fain
2026-03-07 18:43:00 -06:00
parent 36db39584f
commit e65485a44b
4 changed files with 72 additions and 70 deletions
+64 -62
View File
@@ -49,7 +49,7 @@ export function ContentSettings() {
{/* Notes Section */}
<div>
<div className="relative px-3 py-3.5">
<h2 className="text-base font-semibold">Notes</h2>
<h2 className="text-base font-semibold">Basic Home Feed Options</h2>
<div className="absolute bottom-0 left-0 right-0 h-1 bg-primary rounded-full" />
</div>
<div className="pb-4">
@@ -71,7 +71,7 @@ export function ContentSettings() {
{/* Other Stuff Section */}
<div>
<div className="relative px-3 py-3.5">
<h2 className="text-base font-semibold">Other Stuff</h2>
<h2 className="text-base font-semibold">Show More Content Types in Home Feed</h2>
<div className="absolute bottom-0 left-0 right-0 h-1 bg-primary rounded-full" />
</div>
<div className="pb-4">
@@ -436,69 +436,71 @@ function FeedTabsSection() {
</div>
</div>
<div className="px-3 py-4 space-y-4">
{showCommunityFeed && (
<div className="px-3 py-4 space-y-4">
{/* Community Management */}
<div className="space-y-3">
<div>
<div className="flex items-center gap-2 mb-1">
<Users className="h-4 w-4 text-muted-foreground" />
<Label className="text-sm font-medium">Community</Label>
</div>
<p className="text-xs text-muted-foreground">
Set a community domain. We'll download the NIP-05 user list to show posts only from verified members.
</p>
</div>
{!community ? (
<div className="flex gap-2">
<Input
placeholder="ditto.pub"
value={communityDomain}
onChange={(e) => setCommunityDomain(e.target.value)}
onKeyDown={(e) => {
if (e.key === 'Enter') {
handleDownloadCommunity();
}
}}
className="h-9"
disabled={isDownloading}
/>
<Button
onClick={handleDownloadCommunity}
disabled={isDownloading || !communityDomain.trim()}
size="sm"
className="h-9"
>
{isDownloading ? (
<Loader2 className="h-4 w-4 animate-spin" />
) : (
<Download className="h-4 w-4" />
)}
</Button>
</div>
) : (
<div className="flex items-center justify-between">
<div className="flex items-center gap-2 flex-1 min-w-0">
<div className="min-w-0">
<p className="text-sm font-medium truncate">{community.label}</p>
<p className="text-xs text-muted-foreground truncate">
{community.domain} {community.userCount} {community.userCount === 1 ? 'user' : 'users'}
</p>
</div>
{/* Community Management */}
<div className="space-y-3">
<div>
<div className="flex items-center gap-2 mb-1">
<Users className="h-4 w-4 text-muted-foreground" />
<Label className="text-sm font-medium">Community</Label>
</div>
<Button
variant="ghost"
size="sm"
onClick={handleRemoveCommunity}
className="shrink-0 h-8 w-8 p-0"
>
<X className="h-4 w-4 text-destructive" />
</Button>
<p className="text-xs text-muted-foreground">
Set a community domain. We'll download the NIP-05 user list to show posts only from verified members.
</p>
</div>
)}
</div>
</div>
{!community ? (
<div className="flex gap-2">
<Input
placeholder="ditto.pub"
value={communityDomain}
onChange={(e) => setCommunityDomain(e.target.value)}
onKeyDown={(e) => {
if (e.key === 'Enter') {
handleDownloadCommunity();
}
}}
className="h-9"
disabled={isDownloading}
/>
<Button
onClick={handleDownloadCommunity}
disabled={isDownloading || !communityDomain.trim()}
size="sm"
className="h-9"
>
{isDownloading ? (
<Loader2 className="h-4 w-4 animate-spin" />
) : (
<Download className="h-4 w-4" />
)}
</Button>
</div>
) : (
<div className="flex items-center justify-between">
<div className="flex items-center gap-2 flex-1 min-w-0">
<div className="min-w-0">
<p className="text-sm font-medium truncate">{community.label}</p>
<p className="text-xs text-muted-foreground truncate">
{community.domain} {community.userCount} {community.userCount === 1 ? 'user' : 'users'}
</p>
</div>
</div>
<Button
variant="ghost"
size="sm"
onClick={handleRemoveCommunity}
className="shrink-0 h-8 w-8 p-0"
>
<X className="h-4 w-4 text-destructive" />
</Button>
</div>
)}
</div>
</div>
)}
{/* Saved Feeds */}
<SavedFeedsSection />
+2 -2
View File
@@ -95,7 +95,7 @@ export const EXTRA_KINDS: ExtraKindDef[] = [
kind: 6,
id: 'reposts',
feedKey: 'feedIncludeReposts',
label: 'Reposts',
label: 'Reposted Notes',
description: 'Shared posts from others',
addressable: false,
section: 'feed',
@@ -105,7 +105,7 @@ export const EXTRA_KINDS: ExtraKindDef[] = [
kind: 16,
id: 'generic-reposts',
feedKey: 'feedIncludeReposts',
label: 'Generic Reposts',
label: 'Reposted Other Content',
description: 'Shared non-text-note posts from others',
addressable: false,
section: 'feed',
+4 -4
View File
@@ -8,8 +8,8 @@ export function ContentSettingsPage() {
const { config } = useAppContext();
useSeoMeta({
title: `Feed | Settings | ${config.appName}`,
description: 'Choose what types of posts appear in your feed',
title: `Home Feed | Settings | ${config.appName}`,
description: 'Choose what types of posts appear in your home feed',
});
return (
@@ -21,9 +21,9 @@ export function ContentSettingsPage() {
<ArrowLeft className="size-5" />
</Link>
<div>
<h1 className="text-xl font-bold">Feed</h1>
<h1 className="text-xl font-bold">Home Feed</h1>
<p className="text-sm text-muted-foreground mt-0.5">
Nostr supports many content types beyond text posts. Customize which kinds appear in your feed.
Nostr supports many content types beyond text posts. Customize which kinds appear in your home feed.
</p>
</div>
</div>
+2 -2
View File
@@ -32,8 +32,8 @@ const settingsSections: SettingsSection[] = [
},
{
id: 'feed',
label: 'Feed',
description: 'Choose what types of posts appear in your feed',
label: 'Home Feed',
description: 'Choose what types of posts appear in your home feed',
icon: Rss,
path: '/settings/feed',
},