diff --git a/api/article-og.ts b/api/article-og.ts index f4469fc7..3f8d3002 100644 --- a/api/article-og.ts +++ b/api/article-og.ts @@ -147,7 +147,7 @@ function generateHtml(naddr: string, meta: ArticleMetadata | null): string { const baseUrl = 'https://read.withboris.com' const articleUrl = `${baseUrl}/a/${naddr}` - const title = meta?.title || 'Boris – Nostr Bookmarks' + const title = meta?.title || 'Boris – Read, Highlight, Explore' const description = meta?.summary || 'Your reading list for the Nostr world. A minimal nostr client for bookmark management with highlights.' const image = meta?.image?.startsWith('http') ? meta.image : `${baseUrl}${meta?.image || '/boris-social-1200.png'}` const author = meta?.author || 'Boris' diff --git a/index.html b/index.html index e2547605..8e775544 100644 --- a/index.html +++ b/index.html @@ -9,14 +9,14 @@ - Boris - Nostr Bookmarks + Boris - Read, Highlight, Explore - + @@ -24,7 +24,7 @@ - + diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest index 2ee750fb..bd90c3a2 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -1,5 +1,5 @@ { - "name": "Boris - Nostr Bookmarks", + "name": "Boris - Read, Highlight, Explore", "short_name": "Boris", "description": "Your reading list for the Nostr world. A minimal nostr client for bookmark management with highlights.", "start_url": "/", diff --git a/src/components/HighlightButton.tsx b/src/components/HighlightButton.tsx index b86448a2..3dc955ea 100644 --- a/src/components/HighlightButton.tsx +++ b/src/components/HighlightButton.tsx @@ -45,7 +45,7 @@ export const HighlightButton = React.forwardRef = ({ onToggleCollapse, onLogou const handleMenuItemClick = (action: () => void) => { setShowProfileMenu(false) + // Close mobile sidebar when navigating on mobile + if (isMobile) { + onToggleCollapse() + } action() } @@ -127,23 +131,38 @@ const SidebarHeader: React.FC = ({ onToggleCollapse, onLogou
navigate('/')} + onClick={() => { + if (isMobile) { + onToggleCollapse() + } + navigate('/') + }} title="Home" ariaLabel="Home" variant="ghost" /> { + if (isMobile) { + onToggleCollapse() + } + navigate('/explore') + }} + title="Explore" + ariaLabel="Explore" variant="ghost" /> navigate('/explore')} - title="Explore" - ariaLabel="Explore" + icon={faGear} + onClick={() => { + if (isMobile) { + onToggleCollapse() + } + onOpenSettings() + }} + title="Settings" + ariaLabel="Settings" variant="ghost" /> {!isMobile && ( diff --git a/src/services/readingPositionService.ts b/src/services/readingPositionService.ts index a3383d7f..3deb8fee 100644 --- a/src/services/readingPositionService.ts +++ b/src/services/readingPositionService.ts @@ -19,7 +19,6 @@ export interface ReadingProgressContent { progress: number // 0-1 scroll progress ts?: number // Unix timestamp (optional, for display) loc?: number // Optional: pixel position - ver?: string // Schema version } // Helper to extract and parse reading progress from event (kind 39802) @@ -117,8 +116,7 @@ export async function saveReadingPosition( const progressContent: ReadingProgressContent = { progress: position.position, ts: position.timestamp, - loc: position.scrollTop, - ver: '1' + loc: position.scrollTop } const tags = generateProgressTags(articleIdentifier) diff --git a/src/services/readingProgressController.ts b/src/services/readingProgressController.ts index 3d0af404..c3570e6d 100644 --- a/src/services/readingProgressController.ts +++ b/src/services/readingProgressController.ts @@ -13,7 +13,7 @@ type ProgressMapCallback = (progressMap: Map) => void type LoadingCallback = (loading: boolean) => void const LAST_SYNCED_KEY = 'reading_progress_last_synced' -const PROGRESS_CACHE_KEY = 'reading_progress_cache_v1' +const PROGRESS_CACHE_KEY = 'reading_progress_cache' /** * Shared reading progress controller diff --git a/src/styles/components/me.css b/src/styles/components/me.css index c18d0128..1ed24471 100644 --- a/src/styles/components/me.css +++ b/src/styles/components/me.css @@ -75,6 +75,18 @@ .me-highlights-list { padding-left: 0; padding-right: 0; } .explore-header .author-card { max-width: 600px; margin: 0 auto; width: 100%; } +/* Hide tab labels on mobile to save space */ +@media (max-width: 768px) { + .me-tab .tab-label { + display: none; + } + + .me-tab { + padding: 0.75rem; + gap: 0; + } +} + /* Bookmarks list */ .bookmarks-list { display: flex; diff --git a/vite.config.ts b/vite.config.ts index 4ec6a530..1a0b1829 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -104,7 +104,7 @@ export default defineConfig({ filename: 'sw.ts', injectRegister: null, manifest: { - name: 'Boris - Nostr Bookmarks', + name: 'Boris - Read, Highlight, Explore', short_name: 'Boris', description: 'Your reading list for the Nostr world. A minimal nostr client for bookmark management with highlights.', start_url: '/',