Compare commits

..

5 commits

Author SHA1 Message Date
sakrecoer
7b7c2ba65e change default relays and blossoms 2026-05-15 23:37:49 +02:00
sakrecoer
b62ed76e2d default manifesto background color 2026-05-15 22:46:14 +02:00
sakrecoer
ea170d350f group all relays
instead of showing single relays in a list, group them all.
2026-04-10 12:11:17 +02:00
sakrecoer
74e1c054b9 fix missing tags
- fix linting
- remove unnecessary fluff
2026-04-10 12:10:09 +02:00
sakrecoer
fb98f867cd better icons 2026-04-10 12:09:14 +02:00
12 changed files with 78 additions and 86 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Before After
Before After

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="512" height="512" version="1.1" viewBox="0 0 135.47 135.47" xmlns="http://www.w3.org/2000/svg"> <svg width="512" height="512" version="1.1" viewBox="0 0 135.47 135.47" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-22.716 -51.501)"> <g transform="translate(-22.716 -51.501)" fill="#501d74">
<path d="m146.15 133.2q0 17.635-16.412 31.777-16.412 14.143-34.396 14.143-7.857 0-15.19-2.9682-7.1586-2.9682-11.698-6.4602-4.5396-3.492-9.603-6.4602-4.8888-2.9682-8.5554-2.9682-3.492 0-6.4602 2.0952-2.7936 2.0952-2.9682 5.5872h-2.9682q0.17454-9.9522 9.0792-17.111 9.0792-7.1586 19.381-7.3332 6.984-7.5078 6.984-27.936v-26.888q0-4.365-0.34925-7.3332-0.17454-3.1428-1.2221-7.5078-0.87305-4.365-3.492-6.6348-2.619-2.4444-6.6348-2.4444-4.1904 0-6.6348 3.492-2.2698 3.492-2.2698 7.857 0 4.8888 5.5872 14.841 5.5872 9.7776 5.5872 16.412 0 15.539-25.142 23.396l-1.2221-1.9206q8.5554-3.8412 8.5554-10.127 0-4.0158-5.7618-13.793-5.5872-9.7776-5.5872-17.984 0-12.047 11.174-19.73 11.349-7.857 24.095-7.857 17.984 0 25.142 14.317l21.127-14.317q9.603 0.5238 16.936 5.5872 7.3332 4.8888 7.3332 13.968 0 8.5554-6.111 14.317-5.9364 5.7618-15.19 8.73 12.571 0.69833 19.73 9.603 7.1586 8.73 7.1586 21.65zm-26.714-43.65q0-6.2856-3.492-11-3.492-4.8888-9.4284-4.8888-4.8888 0-10.301 5.0634 1.2221 10.301 1.2221 24.444 0 3.6666 0 8.73 9.0792-2.7936 15.539-8.3808 6.4602-5.7618 6.4602-13.968zm7.3332 59.713q0-9.9522-8.3808-21.301-8.2062-11.349-17.635-11.349-2.2698 0-3.6666 0.69834-0.69834 5.9364-3.492 10.476-2.619 4.365-5.238 6.2856-2.4444 1.9206-8.2062 5.4126-5.5872 3.492-8.3808 5.4126 6.111 1.746 20.603 11.349 14.666 9.4284 20.254 9.4284 6.4602 0 10.301-4.8888 3.8412-4.8888 3.8412-11.524z" stroke-width="4.365" style="white-space:pre"/> <path d="m146.15 133.2q0 17.635-16.412 31.777-16.412 14.143-34.396 14.143-7.857 0-15.19-2.9682-7.1586-2.9682-11.698-6.4602-4.5396-3.492-9.603-6.4602-4.8888-2.9682-8.5554-2.9682-3.492 0-6.4602 2.0952-2.7936 2.0952-2.9682 5.5872h-2.9682q0.17454-9.9522 9.0792-17.111 9.0792-7.1586 19.381-7.3332 6.984-7.5078 6.984-27.936v-26.888q0-4.365-0.34925-7.3332-0.17454-3.1428-1.2221-7.5078-0.87305-4.365-3.492-6.6348-2.619-2.4444-6.6348-2.4444-4.1904 0-6.6348 3.492-2.2698 3.492-2.2698 7.857 0 4.8888 5.5872 14.841 5.5872 9.7776 5.5872 16.412 0 15.539-25.142 23.396l-1.2221-1.9206q8.5554-3.8412 8.5554-10.127 0-4.0158-5.7618-13.793-5.5872-9.7776-5.5872-17.984 0-12.047 11.174-19.73 11.349-7.857 24.095-7.857 17.984 0 25.142 14.317l21.127-14.317q9.603 0.5238 16.936 5.5872 7.3332 4.8888 7.3332 13.968 0 8.5554-6.111 14.317-5.9364 5.7618-15.19 8.73 12.571 0.69833 19.73 9.603 7.1586 8.73 7.1586 21.65zm-26.714-43.65q0-6.2856-3.492-11-3.492-4.8888-9.4284-4.8888-4.8888 0-10.301 5.0634 1.2221 10.301 1.2221 24.444 0 3.6666 0 8.73 9.0792-2.7936 15.539-8.3808 6.4602-5.7618 6.4602-13.968zm7.3332 59.713q0-9.9522-8.3808-21.301-8.2062-11.349-17.635-11.349-2.2698 0-3.6666 0.69834-0.69834 5.9364-3.492 10.476-2.619 4.365-5.238 6.2856-2.4444 1.9206-8.2062 5.4126-5.5872 3.492-8.3808 5.4126 6.111 1.746 20.603 11.349 14.666 9.4284 20.254 9.4284 6.4602 0 10.301-4.8888 3.8412-4.8888 3.8412-11.524z" fill="#501d74" stroke-width="4.365" style="white-space:pre"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="512" height="512" version="1.1" viewBox="0 0 135.47 135.47" xmlns="http://www.w3.org/2000/svg"> <svg width="512" height="512" version="1.1" viewBox="0 0 135.47 135.47" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-22.716 -51.501)"> <g transform="translate(-22.716 -51.501)" fill="#501d74">
<path d="m146.15 133.2q0 17.635-16.412 31.777-16.412 14.143-34.396 14.143-7.857 0-15.19-2.9682-7.1586-2.9682-11.698-6.4602-4.5396-3.492-9.603-6.4602-4.8888-2.9682-8.5554-2.9682-3.492 0-6.4602 2.0952-2.7936 2.0952-2.9682 5.5872h-2.9682q0.17454-9.9522 9.0792-17.111 9.0792-7.1586 19.381-7.3332 6.984-7.5078 6.984-27.936v-26.888q0-4.365-0.34925-7.3332-0.17454-3.1428-1.2221-7.5078-0.87305-4.365-3.492-6.6348-2.619-2.4444-6.6348-2.4444-4.1904 0-6.6348 3.492-2.2698 3.492-2.2698 7.857 0 4.8888 5.5872 14.841 5.5872 9.7776 5.5872 16.412 0 15.539-25.142 23.396l-1.2221-1.9206q8.5554-3.8412 8.5554-10.127 0-4.0158-5.7618-13.793-5.5872-9.7776-5.5872-17.984 0-12.047 11.174-19.73 11.349-7.857 24.095-7.857 17.984 0 25.142 14.317l21.127-14.317q9.603 0.5238 16.936 5.5872 7.3332 4.8888 7.3332 13.968 0 8.5554-6.111 14.317-5.9364 5.7618-15.19 8.73 12.571 0.69833 19.73 9.603 7.1586 8.73 7.1586 21.65zm-26.714-43.65q0-6.2856-3.492-11-3.492-4.8888-9.4284-4.8888-4.8888 0-10.301 5.0634 1.2221 10.301 1.2221 24.444 0 3.6666 0 8.73 9.0792-2.7936 15.539-8.3808 6.4602-5.7618 6.4602-13.968zm7.3332 59.713q0-9.9522-8.3808-21.301-8.2062-11.349-17.635-11.349-2.2698 0-3.6666 0.69834-0.69834 5.9364-3.492 10.476-2.619 4.365-5.238 6.2856-2.4444 1.9206-8.2062 5.4126-5.5872 3.492-8.3808 5.4126 6.111 1.746 20.603 11.349 14.666 9.4284 20.254 9.4284 6.4602 0 10.301-4.8888 3.8412-4.8888 3.8412-11.524z" stroke-width="4.365" style="white-space:pre"/> <path d="m146.15 133.2q0 17.635-16.412 31.777-16.412 14.143-34.396 14.143-7.857 0-15.19-2.9682-7.1586-2.9682-11.698-6.4602-4.5396-3.492-9.603-6.4602-4.8888-2.9682-8.5554-2.9682-3.492 0-6.4602 2.0952-2.7936 2.0952-2.9682 5.5872h-2.9682q0.17454-9.9522 9.0792-17.111 9.0792-7.1586 19.381-7.3332 6.984-7.5078 6.984-27.936v-26.888q0-4.365-0.34925-7.3332-0.17454-3.1428-1.2221-7.5078-0.87305-4.365-3.492-6.6348-2.619-2.4444-6.6348-2.4444-4.1904 0-6.6348 3.492-2.2698 3.492-2.2698 7.857 0 4.8888 5.5872 14.841 5.5872 9.7776 5.5872 16.412 0 15.539-25.142 23.396l-1.2221-1.9206q8.5554-3.8412 8.5554-10.127 0-4.0158-5.7618-13.793-5.5872-9.7776-5.5872-17.984 0-12.047 11.174-19.73 11.349-7.857 24.095-7.857 17.984 0 25.142 14.317l21.127-14.317q9.603 0.5238 16.936 5.5872 7.3332 4.8888 7.3332 13.968 0 8.5554-6.111 14.317-5.9364 5.7618-15.19 8.73 12.571 0.69833 19.73 9.603 7.1586 8.73 7.1586 21.65zm-26.714-43.65q0-6.2856-3.492-11-3.492-4.8888-9.4284-4.8888-4.8888 0-10.301 5.0634 1.2221 10.301 1.2221 24.444 0 3.6666 0 8.73 9.0792-2.7936 15.539-8.3808 6.4602-5.7618 6.4602-13.968zm7.3332 59.713q0-9.9522-8.3808-21.301-8.2062-11.349-17.635-11.349-2.2698 0-3.6666 0.69834-0.69834 5.9364-3.492 10.476-2.619 4.365-5.238 6.2856-2.4444 1.9206-8.2062 5.4126-5.5872 3.492-8.3808 5.4126 6.111 1.746 20.603 11.349 14.666 9.4284 20.254 9.4284 6.4602 0 10.301-4.8888 3.8412-4.8888 3.8412-11.524z" fill="#501d74" stroke-width="4.365" style="white-space:pre"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

@ -54,7 +54,7 @@ export default function MusicTrackNote({ event, className }: MusicTrackNoteProps
trackNumber: getTagValue('track_number'), trackNumber: getTagValue('track_number'),
duration: getTagValue('duration'), duration: getTagValue('duration'),
genres: getTagValues('t').filter(tag => genres: getTagValues('t').filter(tag =>
!['music', 'electronic', 'lofi pop'].includes(tag) !['music'].includes(tag)
), ),
lyrics, lyrics,
credits credits
@ -71,73 +71,71 @@ export default function MusicTrackNote({ event, className }: MusicTrackNoteProps
return ( return (
<div className={`space-y-4 p-4 ${className || ''}`}> <div className={`space-y-4 p-4 ${className || ''}`}>
{/* Main track container */} {/* Main track container */}
<div className="flex gap-4 flex-col sm:flex-row"> <div className="flex gap-4 flex-col sm:flex-row">
{/* Cover Art */} {/* Cover Art */}
{metadata.image && ( {metadata.image && (
<div className="flex-shrink-0"> <div className="flex-shrink-0">
<img <img
src={metadata.image} src={metadata.image}
alt={metadata.alt || metadata.title} alt={metadata.alt || metadata.title}
className="w-48 h-48 object-cover rounded-lg shadow-md" className="w-48 h-48 object-cover rounded-lg shadow-md"
loading="lazy" loading="lazy"
/> />
</div>
)}
{/* Track Info */}
<div className="flex-1 space-y-2">
<h3 className="text-xl font-bold">{metadata.title}</h3>
{metadata.artist && (
<p className="text-muted-foreground">
{t('music.by')} {metadata.artist}
</p>
)}
{metadata.album && (
<p className="text-sm">
{t('music.album')}: {metadata.album}
{metadata.trackNumber && `${t('music.track')} ${metadata.trackNumber}`}
</p>
)}
{metadata.releaseDate && (
<p className="text-sm text-muted-foreground">
{t('music.released')}: {dayjs(metadata.releaseDate).format('MMMM D, YYYY')}
</p>
)}
{/* Audio Player */}
<div className="mt-4">
<AudioPlayer
src={metadata.url}
/>
</div>
{/* Show lyrics if they exist */}
{metadata.lyrics && (
<div className="pt-2">
<p className="text-sm whitespace-pre-wrap text-muted-foreground">
{metadata.lyrics}
</p>
</div>
)}
{/* Show credits if they exist */}
{metadata.credits && (
<div className="pt-2">
<p className="text-sm italic text-muted-foreground whitespace-pre-wrap">
<span className="font-semibold not-italic">{t('music.credits')}:</span><br />
{metadata.credits}
</p>
</div>
)}
</div>
</div> </div>
)}
{/* Track Info */}
<div className="flex-1 space-y-2">
<h3 className="text-xl font-bold">{metadata.title}</h3>
{metadata.artist && (
<p className="text-muted-foreground">
{t('music.by')} {metadata.artist}
</p>
)}
{metadata.album && (
<p className="text-sm">
{t('music.album')}: {metadata.album}
{metadata.trackNumber && `${t('music.track')} ${metadata.trackNumber}`}
</p>
)}
{metadata.releaseDate && (
<p className="text-sm text-muted-foreground">
{t('music.released')}: {dayjs(metadata.releaseDate).format('MMMM D, YYYY')}
</p>
)}
{/* Audio Player */}
<div className="mt-4">
<AudioPlayer
src={metadata.url}
/>
</div>
{/* Show lyrics if they exist */}
{metadata.lyrics && (
<div className="pt-2">
<p className="text-sm whitespace-pre-wrap text-muted-foreground">
{metadata.lyrics}
</p>
</div>
)}
{/* Show credits if they exist */}
{metadata.credits && (
<div className="pt-2">
<p className="text-sm italic text-muted-foreground whitespace-pre-wrap">
<span className="font-semibold not-italic">{t('music.credits')}:</span><br />
{metadata.credits}
</p>
</div>
)}
</div>
</div>
{/* License and Metadata Footer */} {/* License and Metadata Footer */}
@ -148,13 +146,6 @@ export default function MusicTrackNote({ event, className }: MusicTrackNoteProps
</p> </p>
)} )}
{/* Only show alt if it's different from what we've shown
{metadata.alt && !metadata.credits && (
<p className="text-xs text-muted-foreground">
{t('music.altText')}: {metadata.alt}
</p>
)}
*/}
{metadata.genres.length > 0 && ( {metadata.genres.length > 0 && (
<div className="flex flex-wrap gap-2 mt-2"> <div className="flex flex-wrap gap-2 mt-2">
{metadata.genres.map((genre, index) => ( {metadata.genres.map((genre, index) => (

View file

@ -1,6 +1,6 @@
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import { TRelaySet } from '@/types' import { TRelaySet } from '@/types'
import { ChevronDown, FolderClosed, Music, Radio, Trees, DoorOpen } from 'lucide-react' import { ChevronDown, FolderClosed, Music, Radio, Trees, DoorOpen, TrendingUp } from 'lucide-react'
import { useState } from 'react' import { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import RelayIcon from '../RelayIcon' import RelayIcon from '../RelayIcon'
@ -25,6 +25,7 @@ export default function RelaySetCard({
if (nameLower.includes('music')) return Music if (nameLower.includes('music')) return Music
if (nameLower.includes('backstage')) return DoorOpen if (nameLower.includes('backstage')) return DoorOpen
if (nameLower.includes('hood')) return Trees if (nameLower.includes('hood')) return Trees
if (nameLower.includes('trend')) return TrendingUp
return FolderClosed return FolderClosed

View file

@ -72,13 +72,12 @@ export const ApplicationDataKey = {
} }
export const BIG_RELAY_URLS = [ export const BIG_RELAY_URLS = [
'wss://relay.damus.io/', 'wss://basspistol.org/',
'wss://nos.lol/', 'wss://nos.lol/',
'wss://relay.primal.net/', 'wss://relay.damus.io/'
'wss://offchain.pub/'
] ]
export const SEARCHABLE_RELAY_URLS = ['wss://basspistol.org/','wss://pyramid.fiatjaf.com/','wss://spatia-arcana.com/'] export const SEARCHABLE_RELAY_URLS = ['wss://basspistol.org/','wss://pyramid.fiatjaf.com/','wss://spatia-arcana.com/','wss://relay.dyne.org']
export const TRENDING_NOTES_RELAY_URLS = ['wss://basspistol.org/uppermost'] export const TRENDING_NOTES_RELAY_URLS = ['wss://basspistol.org/uppermost']

View file

@ -8,7 +8,7 @@ import { cn } from '@/lib/utils'
import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider' import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider'
import { useFeed } from '@/providers/FeedProvider' import { useFeed } from '@/providers/FeedProvider'
import { useScreenSize } from '@/providers/ScreenSizeProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { ChevronDown, Server, Star, UsersRound, Music, Radio, Trees, DoorOpen } from 'lucide-react' import { ChevronDown, Server, Star, UsersRound, Music, Radio, Trees, DoorOpen, TrendingUp } from 'lucide-react'
import { forwardRef, HTMLAttributes, useMemo, useState } from 'react' import { forwardRef, HTMLAttributes, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
@ -103,6 +103,7 @@ const FeedSwitcherTrigger = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivEle
if (nameLower.includes('music')) return <Music /> if (nameLower.includes('music')) return <Music />
if (nameLower.includes('backstage')) return <DoorOpen /> if (nameLower.includes('backstage')) return <DoorOpen />
if (nameLower.includes('hood')) return <Trees /> if (nameLower.includes('hood')) return <Trees />
if (nameLower.includes('hood')) return <TrendingUp />
// Default relay set icon // Default relay set icon
return <Server /> return <Server />

View file

@ -95,8 +95,8 @@ export default defineConfig(({ mode }) => {
], ],
start_url: '/', start_url: '/',
display: 'standalone', display: 'standalone',
background_color: '#FFFFFF', background_color: '#200B2E',
theme_color: '#FFFFFF', theme_color: '#200B2E',
description: packageJson.description description: packageJson.description
} }
}) })