Files
boris/CHANGELOG.md
2025-11-22 02:18:25 +01:00

2257 lines
63 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.11.1] - 2025-11-22
### Added
- Three-dot menu to profile view
- Clickable quote text in highlights to navigate to article
- Profile navigation from highlight author cards
- Improved relay hint selection to exclude non-content relays
### Fixed
- Profile header horizontal padding matches tabs width
- Profile menu positioning inside card
- Highlight quote button navigation reliability
- Highlight menu cutoff when only one highlight
- Article loading reuses Explore article events for immediate display
- Removed unused variables and imports
### Refactored
- Unified relay configuration with typed registry
- Improved relay hint selection and relay management
## [0.11.0] - 2025-11-07
### Added
- Configurable link color setting for article links
- Basic markdown syntax test files for testing
- Article tags and image alt text to OpenGraph metadata
- Storage-backed OpenGraph previews with Upstash Redis
- Always render OpenGraph meta for `/a/:naddr` routes with redirect script for browsers
- Script to publish markdown test files to Nostr using nak
- npm script for publishing test markdown files
### Changed
- Default link color changed to Sky Blue (#38bdf8)
- Link color setting renamed to `--color-link` with dark/light theme support
- Use single link color setting with theme-aware palette
- Increased paragraph spacing in reader view to 1.5rem
- Increased top margin on headlines in reader view
- Improved link visibility in dark mode with lighter indigo-400 color
- Default Nostr gateway changed to njump.to
- Node runtime pinned to 22.x via package.json engines
- Simplified OpenGraph fetch by removing timeout wrapper and background refresh
### Fixed
- Use sentinel query param for OpenGraph redirect to preserve `/a/:naddr` paths
- Gate `/a/:naddr` rewrite to crawlers to prevent refresh redirect
- Update preview link color when link color setting changes
- Store separate link colors for dark and light themes
- Remove unused LINK_COLORS import from ColorPicker
- Increase relay fetch timeout from 3s to 5s for better reliability
- Improve Redis initialization and add debugging for metadata fetch
- Add .js extensions to ESM imports for Vercel compatibility
- Move OpenGraph service files to api/services for Vercel compatibility
- Resolve linting and type errors
- Remove user-agent restriction from article OpenGraph rewrite
- Inline profile display name helper to avoid src import in serverless
- Move profile helpers to lib and import from API and src to fix serverless import resolution
### Performance
- Implement early-return article fetch with micro-wait author
- Increase relay request timeouts (7s article, 5s profile) to improve reliability
- Remove gateway fetch, use relays with short timeout
### Refactored
- Use relative path for preview link to work on localhost
- Move link to 3rd paragraph and remove 4th paragraph from preview
- Update preview link to use real article link instead of sample text
- Move profile helpers to shared lib module to keep code DRY
### Documentation
- Remove Development section from README
- Update source links to point to specific files
- Add source links to basic markdown test files
- Add footnotes explaining Bitcoin frequency notation
- Add explanatory paragraphs to each test table
- Add test account npub and profile link to .env.example
- Add comprehensive documentation for publish-markdown script
## [0.10.33] - 2025-11-05
### Fixed
- Mobile text selection detection for highlight button using selectionchange event
- Normalized index mapping algorithm for whitespace handling in highlights
### Changed
- Allow nested mark elements for overlapping highlights
- Remove unused React import from VideoEmbedProcessor
### Performance
- Optimize highlight application by collecting text nodes once instead of per highlight (O(n×m) -> O(n+m))
- Add caching for highlighted HTML results with TTL and size limits
## [0.10.32] - 2025-11-02
### Added
- Loading states with shimmer effect for profile lookups in articles
- localStorage caching for profile resolution with LRU eviction
- Progressive profile resolution that updates from fallback to resolved names
### Changed
- Standardized applesauce helpers for npub/nprofile detection and display
- Standardized profile display name fallbacks across codebase
- Removed 'npub1' prefix from shortened npub displays
- Improved @ prefix handling for profile mentions
- Profile fetching is now reactive (removed timeouts)
- Profile label updates are batched to prevent UI flickering
### Fixed
- Profile label updates now work correctly and preserve pending updates
- Race condition in profile label updates resolved
- React hooks exhaustive-deps warnings resolved
- Rules of Hooks violation in profile mapping
- Syntax error in RichContent try-catch structure
- Profile fetching re-checks eventStore for async profile arrivals
- LRU cache eviction handles QuotaExceededError
- Reduced markdown reprocessing to prevent flicker
- TypeScript errors in nostrUriResolver resolved
- Profile labels initialize synchronously from cache for instant display
### Performance
- Added timing metrics for profile resolution performance
- Increased remote relay timeout for profile fetches
- Batch profile label updates to prevent UI flickering
- Ensure purplepag.es relay is used for profile lookups
### Refactored
- Replaced custom NIP-19 parsing with applesauce helpers
- Standardized profile name extraction and code quality
- Standardized npub/nprofile display implementation
- Use pubkey (hex) as Map key instead of encoded nprofile/npub strings
- Standardized profile display name fallbacks
## [0.10.31] - 2025-11-02
### Changed
- Moved add bookmark button to filter bar and aligned with filter buttons
## [0.10.30] - 2025-11-01
### Added
- Navigate to author's writings page from article author card
### Fixed
- Reset scroll to top when navigating to profile pages
- Preserve image aspect ratio when full-width images setting is enabled
## [0.10.29] - 2025-11-01
### Fixed
- Full-width images setting uses width instead of max-width
## [0.10.28] - 2025-11-01
### Fixed
- Nostr URI processing in markdown links
### Removed
- Debug console.log statements from nostrUriResolver
## [0.10.27] - 2025-10-31
### Added
- Refresh button to highlights sidebar header
- Image preloading for blog posts and user profiles (offline caching)
- Development Service Worker for testing image caching
### Fixed
- Service Worker registration and error handling
- Article loading race conditions
- Scroll position management
- React hook ordering issues
- TypeScript and linting issues
## [0.10.26] - 2025-10-31
### Added
- Persist highlight metadata and offline events to localStorage
- Proper relay response tracking for flight mode
### Changed
- Improved flight mode detection and tracking for highlights
- Refactored to use isLocalOnly flag instead of isOfflineCreated
### Fixed
- Flight mode highlights now properly show airplane icon and track status
- Preserve highlight metadata across event conversions and EventStore
- Prevent duplicate highlights
- Publish only to connected relays to avoid timeouts
- Prevent unnecessary relay queries when content is cached
- Various TypeScript, linting, and React hook dependency issues
## [0.10.25] - 2025-01-27
### Added
- Reading progress bar for all bookmark types across all view modes
- Title display for regular bookmarks/links
### Changed
- Redesigned medium-sized bookmark cards with left-side thumbnails
- Made bookmark cards significantly more compact
- Moved bookmark type icon to bottom right footer
- Enhanced card layout with author positioning in bottom-left corner
### Fixed
- Reading progress bar display and consistency across view modes
- Timestamp and icon alignment issues
- TypeScript and linting errors
### Removed
- Type icon from medium-sized bookmark cards
- Text expansion mechanic from medium-sized cards
- URL display from medium-sized bookmark cards
## [0.10.24] - 2025-01-27
### Added
- Dynamic browser title based on content
- Enhanced web bookmarks with OpenGraph data (using fetch-opengraph library)
### Fixed
- Description extraction from web bookmark content field
- Linting and TypeScript issues
## [0.10.23] - 2025-01-27
### Added
- Video thumbnail support for cover images
- Note content support for direct video URLs
- Smart highlight clearing for articles
- Robust highlight loading with fallback mechanisms
### Changed
- Home button alignment moved to left next to profile button
- Video functionality extracted into dedicated VideoView component
### Fixed
- Article loading performance and error handling
- Highlight loading for articles
- Skeleton loader display
- Video metadata extraction
## [0.10.22] - 2025-01-27
### Added
- Mobile-optimized tab interface for `/my` and `/p/` pages
### Changed
- Updated brand tagline from "Nostr Bookmarks" to "Read, Highlight, Explore"
- Reordered bookmarks bar navigation buttons
- Moved highlight button higher up on screen
### Fixed
- Mobile sidebar not closing when navigating to profile sections
- Removed unnecessary versioning from reading progress implementation
## [0.10.21] - 2025-10-23
### Fixed
- Reading position tracking for internal event URLs
- Compact bookmark view display
- Bookmark deduplication in profile view
## [0.10.20] - 2025-10-23
### Added
- Web Bookmarks section appears first when bookmarks are grouped by source
### Fixed
- Mobile scroll position preservation when toggling highlights panel
- Infinite loop in reading position tracking
- Skeleton loading state for articles with zero highlights
- Navigation to bookmarked articles
## [0.10.19] - 2025-10-23
### Added
- Profile dropdown menu in sidebar header
### Changed
- Profile picture interaction updated
- Collapse buttons repositioned for symmetry
- Grouping toggle button repositioned
- Collapse button styling standardized
### Removed
- Redundant logout button from sidebar header
- Refresh buttons from sidebars
### Fixed
- Cleaned up unused component props and parameters
## [0.10.18] - 2025-10-23
### Changed
- User profile routes renamed from `/me` to `/my`
### Fixed
- `/my/writings` displays all user writings
- `/my/highlights` displays all user highlights
### Refactored
- Centralized data fetching in controllers
## [0.10.17] - 2025-10-23
### Added
- Setting to control auto-scroll to reading position
### Fixed
- Blockquote styling on mobile devices
- Timestamp clicks in highlight cards navigate within app
- Hero images properly extend edge-to-edge on mobile
- Article relay links open via `/a/` path instead of `/r/`
### Changed
- Mobile reader padding increased for better readability
- Reading position save interval reduced from 3s to 1s
## [0.10.16] - 2025-10-22
### Fixed
- Reading position auto-save works correctly during continuous scrolling
- Reading position tracking stability improved
### Changed
- Reading position save mechanism changed from debounce to throttle
- Simplified reading position logic by removing unused complexity
### Fixed
- Highlights scroll into view when clicked from `/my/highlights` page
## [0.10.15] - 2025-01-22
### Changed
- Reading position restore uses pre-loaded data from controller
- Reading position scroll animation restored to smooth behavior
### Fixed
- Reading position no longer saves 0% during back navigation on mobile
## [0.10.14] - 2025-01-27
### Added
- Third relay education article link in PWA settings
### Changed
- Timestamp links in bookmark cards navigate within app
- Relay article links punctuation improved for better readability
### Fixed
- Duplicate video embeds and stray HTML artifacts eliminated
- Highlights loading spinner no longer spins forever when article has zero highlights
## [0.10.13] - 2025-01-27
### Added
- Instant article preview when navigating from blog post cards
- Reliable relay fallback for article fetching
### Changed
- Article loading follows local-first controller pattern
- Service Worker only registers in production builds
- Article fetching queries union of naddr relay hints and configured relays
### Fixed
- Article loading race conditions eliminated
- Content/title mismatch when switching articles resolved
- Article re-fetching on settings changes prevented
- Explore writings tab shows skeletons instead of spinner when loading
## [0.10.12] - 2025-01-27
### Added
- Person hiking icon (fa-person-hiking) for explore navigation
### Changed
- Explore icon changed from newspaper to person hiking for better semantic meaning
- Settings button moved before explore button in sidebar navigation
- Profile avatar button uses 44px touch target on mobile
### Fixed
- Web bookmarks (kind:39701) properly deduplicate by d-tag
- Same URL bookmarked multiple times only appears once
- Web bookmark IDs use coordinate format (kind
- Profile avatar button sizing on mobile matches other IconButton components
- Removed all console.log statements from bookmarkController and bookmarkProcessing
## [0.10.11] - 2025-01-27
### Added
- Clock icon for chronological bookmark view
- Clickable highlight count to open highlights sidebar
- Dynamic bookmark filter titles based on selected filter
- Profile picture moved to first position (left-aligned) with consistent sizing
### Changed
- Default bookmark view changed to flat chronological list
- Bookmark URL changed from `/my/reading-list` to `/my/bookmarks`
- Router updated to handle `/my/reading-list``/my/bookmarks` redirect
- Me.tsx bookmarks tab uses dynamic filter titles and chronological sorting
- Me.tsx updated to use faClock icon instead of faBars
- Removed bookmark count from section headings for cleaner display
- Hide close/collapse sidebar buttons on mobile for better UX
### Fixed
- Bookmark sorting now uses proper timestamps (created_at || listUpdatedAt, nulls last)
- Bookmark timestamps display correctly with fallbacks
- Chronological sorting consistency
### Refactored
- Removed excessive debug logging for cleaner console output
- Bookmark timestamp handling never defaults to "now", allows nulls and sorts nulls last
- Renders empty when timestamp is missing instead of showing invalid dates
## [0.10.10] - 2025-10-22
### Changed
- Version bump for consistency
## [0.10.9] - 2025-10-21
### Fixed
- Event fetching reliability with exponential backoff in eventManager
- Bookmark timestamp handling
### Changed
- Removed all debug console logs
## [0.10.8] - 2025-10-21
### Added
- Individual event rendering via `/e/:eventId` path
- Centralized event fetching via new `eventManager` singleton
### Fixed
- Bookmark hydration efficiency
- Search button behavior for notes
- Author profile resolution
## [0.10.7] - 2025-10-21
### Fixed
- Profile pages display all writings correctly
### Changed
- Simplified profile background fetching logic for better maintainability
## [0.10.6] - 2025-10-21
### Added
- Text-to-speech reliability improvements
### Fixed
- Tab switching regression on `/my` page
- Explore page data loading patterns
- Text-to-speech handler cleanup
## [0.10.4] - 2025-10-21
### Added
- Web Share Target support for PWA
### Changed
- Manifest includes `share_target` configuration for system share menu integration
- Service worker handles POST requests to `/share-target` endpoint
- Added `/share-target` route for processing incoming shared content
## [0.10.3] - 2025-10-21
### Added
- Content filtering setting to hide articles posted by bots
### Fixed
- Resolved all linting and type checking issues
## [0.10.2] - 2025-10-20
### Added
- Text-to-speech (TTS) speaker language selection mode
- TTS example text section in settings
### Changed
- TTS language selection uses "Speaker language" terminology
### Fixed
- TTS voice detection and selection logic
## [0.10.0] - 2025-01-27
### Added
- Centralized bookmark loading with streaming and auto-decrypt
- Enhanced debug page with comprehensive diagnostics
- Bunker (NIP-46) authentication support
### Changed
- Improved bookmark loading performance
- Enhanced bunker error messages
- Centralized bookmark loading architecture
### Fixed
- NIP-46 bunker signing and decryption
- Bookmark loading and decryption
- TypeScript and linting errors throughout
### Performance
- Non-blocking NIP-46 operations
- Optimized bookmark loading
### Refactored
- Centralized bookmark controller architecture
- Debug page organization
- Simplified bunker implementation following applesauce patterns
### Documentation
- Comprehensive Amber.md documentation
## [0.9.1] - 2025-10-20
### Added
- Video embedding for nostr-native content
- Media display settings
- Article view improvements
### Changed
- Enable media display options by default for a better outofthebox experience
- Constrain video player to reader width to prevent horizontal overflow
### Fixed
- Prevent double video player rendering when both processor and panel attempted to embed
- Remove text artifacts and broken tags when converting markdown image/video URLs
- Resolved remaining ESLint and TypeScript issues
### Performance
- Optimized Support page loading with instant display and skeletons
## [0.9.0] - 2025-01-20
### Added
- User relay list integration
- Relay list debug section in Debug component
### Changed
- Improved relay list loading performance
- Enhanced relay URL handling
### Fixed
- Resolved all linting issues across the codebase
- Fixed TypeScript type issues in relayListService
- Cleaned up temporary test relays from hardcoded list
- Removed non-relay console.log statements and debug output
### Technical
- Enhanced relay initialization logging for better diagnostics
- Improved error handling and timeout management for relay queries
- Better separation of concerns between relay loading and application startup
## [0.8.6] - 2025-10-20
### Fixed
- React Hooks violations in NostrMentionLink component
## [0.8.4] - 2024-10-20
### Added
- Progressive article hydration for reads tab
### Fixed
- Fixed React type imports in useArticleLoader
## [0.8.3] - 2025-01-19
### Fixed
- Highlight creation shows immediate UI feedback without page refresh
### Changed
- Improved highlight creation user experience
## [0.8.2] - 2025-10-19
### Added
- Reading progress indicator in compact bookmark cards
### Changed
- Compact cards layout optimizations for more space-efficient display
- Reading progress bar styling for compact view
### Fixed
- Removed borders from compact bookmarks in bookmarks sidebar
## [0.8.0] - 2025-10-19
### Added
- Centralized reading progress controller for non-blocking reading position sync
- Reading progress indicators on blog post cards
### Changed
- Reading position sync enabled by default in runtime paths
- Improved auto-mark-as-read behavior with reliable completion detection
- Reading progress events use proper NIP-85 specification
### Fixed
- Reading position saves with proper validation and event store integration
- Profile page writings loading fetches all writings without limits
- Consistent reading progress calculation and event publishing
### Performance
- Non-blocking reading progress controller with streaming updates
- Cache-first loading strategy with local event store before relay queries
- Efficient progress merging and deduplication
## [0.7.4] - 2025-10-18
### Added
- Profile page data preloading for instant tab switching
### Changed
- `/my/bookmarks` tab displays in cards view only
- Highlights sidebar filters simplified when logged out
### Fixed
- Profile page tabs display cached content instantly
### Performance
- Cache-first profile loading strategy
## [0.7.3] - 2025-10-18
### Added
- Centralized nostrverse writings controller for kind 30023 content
- Centralized nostrverse highlights controller
- Writings loading debug section on `/debug` page
### Changed
- Explore page uses centralized `writingsController` for user's own writings
- Explore page loading strategy optimized
- User's own writings included in Explore when enabled
### Fixed
- Explore page works correctly in logged-out mode
- Explore page no longer allows disabling all scope filters
- Explore page reflects default scope setting immediately
- Explore page highlights properly scoped
- Article-specific highlights properly filtered
- Explore writings properly deduplicated
- Debug page writings loading section added
### Performance
- Non-blocking explore page loading
- Lazy-loading for content filters
- Streaming callbacks for progressive updates
## [0.7.2] - 2025-01-27
### Added
- Cached-first loading with EventStore across the app
- Default explore scope setting for controlling content visibility
### Changed
- Highlights and writings load from cache first, then stream from relays
- Explore page shows cached content instantly before network updates
- Article-specific highlights stored in centralized event store for faster access
- Nostrverse content cached locally for improved performance
### Fixed
- Prevent "No highlights yet" flash on `/my/highlights` page
- Force React to remount tab content when switching tabs for proper state management
- Deduplicate blog posts by author:d-tag instead of event ID for better accuracy
- Show skeleton placeholders while highlights are loading for better UX
### Performance
- Local-first loading strategy reduces perceived loading times
- Cached content displays immediately while background sync occurs
- Centralized event storage eliminates redundant network requests
## [0.7.0] - 2025-10-18
### Added
- Login with Bunker (NIP-46) authentication support
- Debug page (`/debug`) for diagnostics and testing
- Progressive bookmark loading with streaming updates
- Bookmark grouping toggle
### Changed
- Improved login UI with better copy and modern design
- Enhanced bunker error messages
- Centralized bookmark loading architecture
- Renamed UI elements for clarity
- Settings version footer improvements
### Fixed
- NIP-46 bunker signing and decryption
- Bookmark loading and decryption
- PWA cache limit increased to 3 MiB for larger bundles
- Extension login error messages with nos2x link
- TypeScript and linting errors throughout
### Performance
- Non-blocking NIP-46 operations
- Optimized bookmark loading
### Refactored
- Centralized bookmark controller architecture
- Debug page organization
- Simplified bunker implementation following applesauce patterns
### Documentation
- Comprehensive Amber.md documentation
## [0.6.24] - 2025-01-16
### Fixed
- TypeScript global declarations for build-time defines
## [0.6.23] - 2025-01-16
### Fixed
- Deep-link refresh redirect issue for nostr-native articles
### Added
- Version and git commit information in Settings footer
### Changed
- Article OG handler uses proper RelayPool.request() API
### Technical
- Added debug logging for route state and article OG handler
## [0.6.22] - 2025-10-16
### Added
- Dynamic OpenGraph and Twitter Card meta tags for article deep-links
- Social preview image for homepage and article links
### Changed
- Article deep-links properly preserve URL when loading in browser
### Fixed
- Vercel rewrite configuration for article routes
## [0.6.21] - 2025-10-16
### Added
- Reading position sync across devices using Nostr Kind 30078
- Reading progress filters for organizing articles
- Reads and Links tabs on `/my` page
- Auto-mark as read at 100% reading progress
- Click-to-open article navigation on highlights
### Changed
- Renamed Archive to Reads with expanded functionality
- Merged 'Completed' and 'Marked as Read' filters into one unified filter
- Simplified filter icon colors to blue
- Started reading progress state (0-10%) uses neutral text color
- Replace spinners with skeleton placeholders during refresh in Archive/Reads/Links tabs
- Removed unused IEventStore import in ContentPanel
### Fixed
- Reading position calculation accurately reaches 100%
- Reading position filters work correctly in bookmarks sidebar
- Filter out reads without timestamps or 'Untitled' items
- Show skeleton placeholders correctly during initial tab load
- External URLs in Reads tab only shown if they have reading progress
- Reading progress merges even when timestamp is older than bookmark
- Resolved all linter errors and TypeScript type issues
### Refactored
- Renamed ArchiveFilters component to ReadingProgressFilters
- Extracted shared utilities from readsFromBookmarks for DRY code
- Use setState callback pattern for background enrichment
- Use naddr format for article IDs to match reading positions
- Extract article titles, images, summaries from bookmark tags using applesauce helpers
## [0.6.20] - 2025-10-15
### Added
- Bookmark filter buttons by content type
- Private Bookmarks section for encrypted legacy bookmarks
### Changed
- Bookmark section labels improved for clarity
- Bookmark filter button styling refined
- Lock icon removed from individual bookmarks
- External article icon changed to link icon
### Fixed
- Highlight button positioning and visibility
## [0.6.19] - 2025-10-15
### Fixed
- Highlights disappearing on external URLs after a few seconds
## [0.6.18] - 2025-10-15
### Changed
- Zap split labels simplified and terminology updated
- Zap preset buttons on desktop expand to match slider width
- PWA install section always visible in settings
### Fixed
- PWA install button properly disabled when installation is not possible on device
- App & Airplane Mode section always visible regardless of PWA status
## [0.6.17] - 2025-10-15
### Added
- PWA settings illustration (`pwa.svg`) displayed on right side of section
- Zaps illustration (`zaps.svg`) displayed on right side of Zap Splits section
- Visual 50% indicators on zap split sliders
- Lightning bolt icons as slider thumbs for zap splits
- Offline-first description paragraph at beginning of App & Airplane Mode section
- Settings page width constraint
### Changed
- Settings section reorganization
- PWA settings section restructure
- Zap split sliders styling
- Zap split description text styling
- Clear cache button styling
- Font Size buttons alignment
- Default Highlight Visibility position
- Spacing adjustments in App & Airplane Mode section
### Fixed
- PWA settings paragraph wrapping
- Font Size buttons alignment issues
- Slider thumb icon centering
## [0.6.16] - 2025-10-15
### Changed
- Replaced delete dialog popup with inline confirmation UI
- Reordered Reading & Display settings for better organization
- Setting buttons align vertically with fixed label width
### Fixed
- Removed unused `handleCancelDelete` function after dialog removal
## [0.6.15] - 2025-10-15
### Added
- Paragraph alignment setting with left-aligned and justified text options
### Changed
- Default paragraph alignment changed to justified for improved reading experience
## [0.6.14] - 2025-10-15
### Added
- Support for bookmark sets
- Content type icons for bookmarks
- Bookmark grouping and sections
- Adaptive text color for publication date over hero images
### Changed
- Renamed "Amethyst-style bookmarks" to "Old Bookmarks (Legacy)"
- Hide cover images in compact view for cleaner layout
- Support button improvements
- Section headings improved with better typography
- Icon changed from book to file-lines for default bookmarks
- Use regular (outlined) icon variants for lighter, more refined appearance
- Add bookmark button moved to web bookmarks section
- Empty state messages replaced with loading spinners
- Section dividers made more subtle
- Simplified bookmark filtering to only exclude empty content
### Fixed
- Removed borders from compact bookmark cards for cleaner look
- Removed duplicate type indicator icons from bookmark cards
- Reduced section heading bottom padding for better spacing
- Aligned add bookmark button with section heading
- Removed redundant loading spinner above tabs
- Resolved linter and type errors
- Include kind:30003 in default bookmark list detection
- Removed text shadows from publication date for cleaner look
- Improved shadow contrast without background overlay
- Corrected async handling in adaptive color detection
- Corrected FastAverageColor import to use named export
- Section heading styles properly override with `!important`
- Removed unused articleImage prop from CompactView
## [0.6.13] - 2025-10-15
### Added
- Support for `nprofile` identifiers on `/p/` profile pages
- Gradient placeholder images for articles without cover images
### Changed
- PWA install section styling in settings
### Fixed
- Mobile bookmark button visibility across all pages
- Mobile highlights button behavior at page top
## [0.6.12] - 2025-10-15
### Changed
- Horizontal dividers (`<hr>`) in blog posts display with more subtle styling
## [0.6.11] - 2025-10-15
### Added
- Colored borders to blog post and highlight cards based on relationship
- Mobile sidebar toggle buttons on explore page
### Fixed
- Mobile bookmarks sidebar opening and closing immediately
## [0.6.10] - 2025-10-15
### Added
- Support page (`/support`) displaying zappers with avatar grid
- Refresh button to explore page
- Unified event publishing and querying services
- FEATURES.md documentation file
- MIT License
### Changed
- Explore page improvements
- Pull-to-refresh library
- Loading states show progressive loading with skeletons instead of blocking error screens
- All event fetching services migrated to unified `queryEvents` helper
- Contact streaming with extended timeout and partial results
### Fixed
- All ESLint and TypeScript linting errors
- Explore page refresh loop and false empty-follows error
- Zap receipt scanning with applesauce helpers and more relays
- Support page theme colors for proper readability
### Refactored
- Event publishing to use unified `publishEvent` service
- Event fetching to use unified `queryEvents` helper
- Image cache and bookmark components
- Support page spacing and visual hierarchy
## [0.6.9] - 2025-10-14
### Documentation
- Minor changelog formatting updates
## [0.6.8] - 2025-10-14
### Changed
- Updated favicon and app icons to purple theme
## [0.6.7] - 2025-10-14
### Added
- Skeleton loading placeholders using `react-loading-skeleton` package
- Nostr identifier parsing and rendering in highlight comments
- Visibility filters for explore page content
### Changed
- Loading states use skeleton placeholders instead of spinners for more polished UX
- Removed incremental loading spinner from explore page refresh
### Fixed
- Type error in `HighlightItem.tsx` using `React.ReactElement` instead of `JSX.Element`
- Me page skeleton loading handles undefined `viewingPubkey` gracefully
### Documentation
- Updated FontAwesome rule to prefer skeleton placeholders over loading text or spinners
## [0.6.6] - 2025-10-14
### Added
- Profile fetching and caching for explore page
- Rich content rendering in highlight comments
### Changed
- Hide citation in highlights sidebar when viewing article
### Fixed
- Blog posts with far-future publication dates no longer appear in explore
- Layout breaks from long URLs in highlight comments
- Profile fetching implementation
## [0.6.5] - 2025-10-14
### Added
- Highlights tab on `/explore` page
- Citation attribution on highlight items
- Comment icon (fa-comments) for highlights with comments
- Click timestamp to open highlight in native Nostr app
### Changed
- Highlight counter text color matches article text
- Highlight level colors applied to explore page highlights
- Explore page tab order: Highlights first, Writings second
- Explore page tabs extend full width to match content grid
### Fixed
- Highlight counter readability in light mode
- Scroll-to-highlight reliability in article view
- Author attribution in highlight citations
- Explore page grid layout
### Style
- Replaced server icon with highlighter icon in highlight items
- Switch from solid comment icon to outlined comments icon
- Removed background from highlight comments for cleaner appearance
- Removed extra left margin from comments
- Comment icon colored by highlight level with no opacity
### Dependencies
- Added @fortawesome/free-regular-svg-icons package for outlined icons
## [0.6.4] - 2025-10-14
### Added
- Color theme variants for light and dark modes
- Playful empty state message for other users' profiles
- Profile links open within app instead of external portals
### Changed
- Default light theme changed to sepia for better readability
- Theme setting labels renamed from 'Colors' to 'Theme'
- Highlight text aligns properly with footer icons
- Increased spacing between highlight cards for better visual separation
- Increased bottom padding in highlight cards
- Simplified Me page tab labels for cleaner UI
- Highlight marker style applied to active Highlights tab
- All profile links open internally instead of via external Nostr portals
- Match highlight comment color to highlight level color
### Fixed
- Consistent yellow-300 highlight color across all themes
- Highlight contrast improved in light themes
- Text contrast improved in dark color themes
- Darker background for app body in dark themes
- Reading progress indicator uses theme colors
- Highlights tab readability improved in light mode with proper background
- Empty state text color changed from red to gray for better aesthetics
- Replaced 'any' types with proper type definitions for better type safety
### Refactored
- Migrated entire codebase to semantic token system
- Removed localStorage for theme persistence, using only Nostr
- Theme colors applied to body element for consistent theming
## [0.6.3] - 2025-10-14
### Added
- Ants link to empty writings state for other users
### Changed
- Empty state text color from red to gray
### Fixed
- Match highlight comment color to highlight level color
- Open all profile links within app instead of external portals
- Playful empty state message for other users' profiles
## [0.6.2] - 2025-01-27
### Added
- Pull-to-refresh gesture on mobile for all scrollable views
- Three-dot menu for external URLs in reader
### Changed
- Bookmark refresh button moved to footer alongside view mode controls
- Unified button styles across left and right sidebars
### Fixed
- Reader content alignment on desktop
- Highlight text matching with multiple improvements
## [0.6.1] - 2025-10-13
### Added
- Writings tab on `/my` page to display user's published articles
- Comprehensive headline styling (h1-h6) with Tailwind typography
- List styling for ordered and unordered lists in articles
- Blockquote styling with indentation and italics
- Vertical padding to blockquotes for better readability
- Horizontal padding for reader text content on desktop
- Drop-shadows to sidebars for visual depth
- MutationObserver for tracking highlight DOM changes
### Changed
- Article titles larger and more prominent
- Article summaries display properly in reader header
- Zap splits settings UI with preset buttons and full-width sliders
- Sidebars extend to 100vh height
- Blockquote styling simplified to minimal indent and italic
- Improved zap splits settings visual design
### Fixed
- Horizontal overflow from code blocks and wide content on mobile
- Settings view mobile-friendly with proper width constraints
- Long relay URLs no longer cause horizontal overflow on mobile
- Sidebar/highlights toggle buttons hidden on settings/explore/my pages
- Video titles show filename instead of 'Error Loading Content'
- AddBookmarkModal z-index issue fixed using React Portal
- Highlight matching for text spanning multiple DOM nodes/inline elements
- Highlights appear as single continuous element across DOM nodes
- Highlights display immediately after creation with synchronous render
- Scroll-to-highlight functionality restored after DOM updates
- Padding gaps around sidebars removed
- TypeScript errors in video-meta.ts resolved
### Refactored
- Migrated entire color system to Tailwind v4 color palette
- Migrated all CSS files (sidebar, highlights, cards, forms, reader, etc.) to Tailwind colors
- Updated default highlight colors to yellow-400 for markers and yellow-300 for other contexts
- Added comprehensive color system documentation
- Cleaned up legacy.css removing unused debugging styles
## [0.6.0] - 2025-10-13
### Added
- Tailwind CSS v4 integration with preflight enabled
- Reading position tracking with visual progress indicator
- Document-level scrolling with sticky sidebars on desktop
- Dedicated legacy styles file for better organization
### Changed
- Refactored layout system to use document scroll instead of pane scroll
- Migrated reading progress indicator to Tailwind utilities
- Migrated mobile buttons to Tailwind utilities
- Simplified global CSS to work with Tailwind preflight
- Updated PostCSS configuration for Tailwind v4
- Reconciled base styles with Tailwind preflight
- Reorganized and cleaned up duplicate styles in index.css
- Made reading progress indicator smaller and more subtle
### Fixed
- Reading position indicator always visible at bottom of screen
- Progress tracking accurately reflects reading position
- Scroll behavior consistent across desktop and mobile
- Removed padding on mobile main pane for edge-to-edge content
- Removed mobile content pane gap for better layout
- Document scroll with important overrides for consistent behavior
## [0.5.7] - 2025-01-14
### Added
- Vimeo video metadata extraction support
- YouTube video metadata extraction with title, description, and captions
- Responsive video player with aspect ratio support
- Thumbnail images in compact view
- URL routing for /my page tabs
- Bookmark navigation in reading list
- Video duration display for video URLs
- Three-dot menu for videos with open/native/copy/share actions
- External video embedding in reader using react-player
- Video detection for Vimeo, Dailymotion, and other platforms
### Changed
- Enhanced borders for reading list cards
- Reading list tab colored blue to match bookmarks icon
- Left-aligned text in reading list elements
- Increased spacing between mobile buttons and profile element
- Main pane full width when displaying videos
- Video container breaks out of reader padding for full width
- Simplified video container layout
### Fixed
- Video player edge-to-edge display with negative margins
- Prevent profile element from bleeding off screen on mobile
- Resolved TypeScript errors in youtube-meta.ts
- Improved type safety in youtube-meta handler
- More lenient YouTube description extraction
- Corrected setTimeout ref type in Settings
- Proper react-player responsive pattern implementation
- Removed unused getIconForUrlType in CompactView
### Style
- Hide tab counts on mobile for /my page
- Remove max-width on main pane, constrain reader instead
- Full width layout for videos
- Reader-video specific styles
## [0.5.6] - 2025-10-13
### Added
- Three-dot menu for articles and enhanced highlight menus
- Prism.js syntax highlighting for code blocks
- Inline image rendering in nostr-native blog posts
- Image placeholders on blog post cards in `/explore`
- Caching on `/my` page for faster loading
### Changed
- Reading List on `/my` uses the same components as the bookmarks sidebar
- Improve bookmarks sidebar visual design
- Make article menu button more subtle by removing border
### Fixed
- Use round checkmark icon (faCheckCircle) for Mark as Read button
- Remove extra horizontal divider above article menu
- Ensure code blocks consistently use monospace fonts
- Preserve reading font settings in markdown images
### Style
- Remove horizontal divider above Mark as Read button
- Remove horizontal divider below article menu button
## [0.5.5] - 2025-01-27
### Added
- `/my` page with tabbed layout featuring Highlights, Reading List, and Library tabs
- Two-pane layout for `/my` page with article sources and highlights
- Custom FontAwesome Pro books icon for Archive tab
- CompactButton component for highlight cards
- Instant mark-as-read functionality with checkmark animation and read status checking
### Changed
- Rename Library tab to Archive
- Move highlight timestamp to top-right corner of cards
- Replace username with AuthorCard component on `/my` page
- Use user's custom highlight color for Highlights tab
- Render library articles using BlogPostCard component for consistency
- Use faBooks icon for Mark as Read button
- Make quote icon a CompactButton in top-left corner
### Fixed
- Include currentArticle in useEffect deps to satisfy lint
- Deduplicate article events in library to prevent showing duplicates
- Remove incorrect useSettings hook usage in Me component
- Correct fetchBookmarks usage with callback pattern in Me component
- Add padding to prevent quote text from overlapping timestamp
- Improve spacing and alignment of highlight card elements
- Align corner elements symmetrically with proper margins
- Group relay icon and author in footer-left for consistent alignment
- Position relay indicator in bottom-left corner to prevent overlap with author
### Style
- Match `/my` profile card width to highlight cards
- Improve My page mobile tabs and avoid overlap with sidebar buttons
- Reduce margins/paddings to make highlight cards more compact
- Tighten vertical spacing on highlight cards
- Left-align text inside author card
- Constrain `/my` page content width to match author card
- Improve tab border styling for dark theme
- Make relay indicator match CompactButton
- Align relay indicator within footer with symmetric spacing
- Make header and footer full-width with borders and corners
## [0.5.4] - 2025-10-13
### Changed
- Refactor CSS into modular structure
### Fixed
- Mobile button positioning uses safe area insets for symmetrical layout on notched devices
## [0.5.3] - 2025-10-13
### Changed
- Relay status indicator is more compact
### Fixed
- Invalid bookmarks without IDs no longer appear in bookmark list
- Profile icon size when logged out matches other icon buttons in sidebar header
## [0.5.2] - 2025-10-12
### Added
- Three-dot menu to highlight cards for more compact UI
### Changed
- Switch Nostr gateway from njump.me/search.dergigi.com to ants.sh
- Remove loading text from Explore and Me pages
- "Open on Nostr" links to the highlight event itself instead of the article
### Fixed
- Gateway URL routing for ants.sh requirements
- Linting errors in HighlightItem component
## [0.5.1] - 2025-10-12
### Added
- Highlight color customization to UI elements
### Fixed
- Highlight count indicator styling to match reading-time element
- Brightness and border styling for highlight count indicator
- User highlight color applies to both marker and arrow icons
- Highlight group color properly applied to count indicator background
### Removed
- MOBILE_IMPLEMENTATION.md documentation file
## [0.5.0] - 2025-10-12
### Added
- Upgrade to full PWA with `vite-plugin-pwa`
- Replace placeholder icons with branded favicons
- Author info card for nostr-native articles
### Changed
- Explore: shrink refresh spinner footprint; inline-sized loading row
- Explore: preserve posts across navigations; seed from cache; merge streamed and final results
- Explore: keep posts visible during refresh; inline spinner; no list wipe
- Bookmarks: keep list visible during refresh; show spinner only; no wipe
- Bookmarks: avoid clearing list when no new events; decouple refetch from route changes
- Highlights: split service into smaller modules to keep files under 210 lines
- Lint/TypeScript: satisfy react-hooks dependencies; fix worker typings; clear ESLint/TS issues
### Fixed
- Highlights: merge remote results after local for article/url
- Explore: always query remote relays after local; stream merge into UI
- Improve mobile touch targets for highlight icons
- Color `/my` highlights with "my highlights" color setting
### Performance
- Local-first then remote follow-up across services
- Run local and remote fetches concurrently; stream and dedupe results
- Stream contacts and early posts from local; merge remote later
- Relay queries use local-first with short timeouts; fallback to remote when needed
- Stream results to UI; display cached/local immediately
### Documentation
- PWA implementation summary and launch checklist updates
- Update docs to reflect branded icons and final steps
- Remove temporary PWA launch checklist and implementation summary
## [0.4.3] - 2025-10-11
### Added
- Mark as read functionality for articles
- Highlight deletion with confirmation dialog
- `/my` page showing user's recent highlights
- Confirmation dialog component
### Changed
- Relay status indicator on mobile displays in compact mode
## [0.4.2] - 2025-10-11
### Added
- NIP-19 identifier resolution in article content
- Auto-hide mobile UI buttons on scroll down
- Scroll direction detection hook
### Changed
- Article references (`naddr`) link internally to `/a/{naddr}` instead of external njump.me
- Sidebar auto-closes on mobile when navigating to content via routes
- Markdown processing async to support article title resolution
- Article title resolution fetches titles in parallel for better performance
### Fixed
- Mobile button scroll detection correctly monitors main pane element
- All ESLint warnings and TypeScript type errors resolved
## [0.4.1] - 2025-10-10
### Fixed
- Long article summaries overlapping with hero image content on mobile devices
- Article summary moves below hero image on mobile when longer than 150 characters
- Article summary line clamp reduced from 3 to 2 lines on mobile for better space utilization
### Changed
- Hero image rendering on mobile uses zoom-to-fit approach with viewport-based sizing
- Hero image height on mobile set to 50vh
- Improved image cropping with center positioning for better visual presentation
- Optimized reader header overlay padding and title sizing on mobile
## [0.4.0] - 2025-10-10
### Added
- Mobile-responsive design with overlay sidebar drawer
- Media query hooks for responsive behavior
- Auto-collapse sidebar setting for mobile devices
- Touch-optimized UI with 44x44px minimum touch targets
- Safe area inset support for notched devices
- Mobile hamburger menu and backdrop
- Focus trap in mobile sidebar with ESC key support
- Body scroll locking when mobile sidebar is open
- Mobile-optimized modals
- Mobile-optimized toast notifications
- Dynamic viewport height support
- Mobile highlights panel as overlay with toggle button
### Changed
- Sidebar displays as overlay drawer on mobile
- Highlights panel hidden on mobile for better content focus
- Sidebar auto-closes when selecting content on mobile
- Hover effects disabled on touch devices
- Replace hamburger icon with bookmark icon on mobile
### Fixed
- Ensure bookmarks container fills mobile sidepane properly
- Restore desktop grid layout for highlights panel
- Improve empty state and loading visibility in mobile sidepanes
- Add flex properties to mobile bookmark containers for proper filling
- Force bookmarks pane expanded on mobile and ensure highlights pane sits above content on desktop
- Reduce mobile backdrop opacity and ensure sidepanes appear above it
- Replace any type with proper bookmark interface for linter compliance
## [0.3.8] - 2025-10-10
### Fixed
- Add vercel.json configuration to properly handle SPA routing on Vercel deployments
## [0.3.7] - 2025-10-10
### Fixed
- Logout button functionality
## [0.3.6] - 2025-10-10
### Added
- Compact date format for highlights
- Ultra-compact date format for bookmarks sidebar
- Encode event links as nevent/naddr per NIP-19 for better client compatibility
- Render /explore within ThreePaneLayout to keep side panels visible
### Fixed
- Remove incorrect padding-right from highlights container
- Reduce font size of highlight metadata for cleaner look
- Position highlight FAB button relative to article pane instead of viewport
- Adjust relay indicator position for better visual alignment
- Ensure highlight metadata elements align on single visual line with consistent line-height
- Prevent bookmark icons from being cut off in compact view
- Clean up nested borders in bookmark items and sidebar view mode controls
- Align highlight metadata elements on single line in sidebar
- Change explore header icon from compass to newspaper
### Changed
- Make connecting notification more subtle with muted blue background
- Update Boris pubkey for zap splits to npub19802see0gnk3vjlus0dnmfdagusqrtmsxpl5yfmkwn9uvnfnqylqduhr0x
- Update domain references to read.withboris.com
## [0.3.5] - 2025-10-09
### Fixed
- Ensure connecting state shows for minimum 15 seconds to prevent premature offline display
- Add Cloudflare Pages routing config for SPA paths
### Changed
- Extend connecting state duration and remove subtitle text for cleaner UI
## [0.3.4] - 2025-10-09
### Fixed
- Add p tag (author tag) to highlights of nostr-native content for proper attribution
## [0.3.3] - 2025-10-09
### Added
- Service Worker for robust offline image caching
- /explore route to discover blog posts from friends on Nostr
- Explore button (newspaper icon) in bookmarks header
- "Connecting" status indicator on page load
- Last fetch time display with relative timestamps in bookmarks list
### Changed
- Simplify image caching to use Service Worker transparently
- Move refresh button from top bar to end of bookmarks list
- Make explore page article cards proper links
- Reorganize bookmarks UI for better UX
### Fixed
- Improve image cache resilience for offline viewing and hard reloads
- Correct TypeScript types for cache stats state
- Resolve linter errors for unused parameters
- Import useEventModel from applesauce-react/hooks for proper type safety
- Import Models from applesauce-core instead of applesauce-react
- Use correct useEventModel hook for profile loading in BlogPostCard
## [0.3.0] - 2025-10-09
### Added
- Flight Mode with offline highlight creation and local relay support
- Automatic offline sync
- Relay indicator icon on highlight items showing sync status
- Click-to-rebroadcast functionality for highlights
- Flight mode indicator (plane icon) on offline-created highlights
- Relay rebroadcast settings for caching and propagation
- Local relay status indicator for local-only/offline mode
- Second local relay support
- Relay connection status tracking and display
- 6th font size option for better UI scaling
### Fixed
- Highlight creation resilient to offline/flight mode
- TypeScript type errors in offline sync
- Relay indicator tooltip accuracy and reliability
- Always show relay indicator icon on highlights
- Show remote relay list for fetched highlights
- Publish highlights to all connected relays instead of just one
- Keep all relay connections alive, not just local ones
- Check actual relay connection status instead of pool membership
- Skip rebroadcasting when in flight mode
- Update relay info after automatic sync completes
- Only show successfully reachable relays in flight mode
- Include local relays in relay indicator tooltip
### Changed
- Rename 'Offline Mode' to 'Flight Mode' throughout UI
- Move publication date to top-right corner with subtle border styling
- Consolidate relay/status indicators into single unified icon
- Simplify relay indicator tooltip to show relay list
- Move rebroadcast settings to dedicated Flight Mode section
- Place Reading Font and Font Size settings side-by-side
- Improve font size scale and default value
- Use wifi icon for disconnected remote relays
- Use airplane icons for local relay indicators
- Make Relays heading same level as Flight Mode in settings
- Simplify rebroadcast settings UI with consistent checkbox style
### Performance
- Make highlight creation instant with non-blocking relay publish
- Reduce relay status polling interval to 20 seconds
- Show sync progress and hide indicator after successful sync
## [0.2.10] - 2025-10-09
### Added
- URL-based settings navigation with /settings route
- Active zap split preset highlighting
- Educational links about relays in reader view
- Article publication date display in reader
- Local relay recommendations in settings
- Relays section showing active and recently connected relays
### Fixed
- Remove trailing slash from relay URLs
- Constrain Reading Font dropdown width
### Changed
- Rename 'Default View Mode' to 'Default Bookmark View' in settings
- Reorganize settings layout for better UX
- Use sidebar-style colored buttons for highlight visibility
- Simplify Relays section presentation
## [0.2.9] - 2025-10-09
### Fixed
- Deduplicate highlights in streaming callbacks
## [0.2.8] - 2025-10-09
### Added
- Display article summary in header
- Overlay title and metadata on hero images
- Apply reading font to article titles
### Fixed
- Pass article summary through to ReadableContent
- Correct Jina AI Reader proxy URL format
### Changed
- Update homepage URL to read.withboris.com
- Reorder toolbar buttons for better UX
## [0.2.7] - 2025-10-08
### Added
- Web bookmark creation
- Tags support for web bookmarks per NIP-B0
- Auto-fetch title and description when URL is pasted
- Prioritize OpenGraph tags for metadata extraction
- Auto-extract tags from metadata with boris as default tag
- Zap split preset buttons
- Boris support percentage to zap splits
- Respect existing zap tags in source content when creating highlights
### Fixed
- Revert to fetchReadableContent to avoid CORS issues
- Improve modal spacing with proper box-sizing
- Prevent sliders from jumping when resetting settings
- Pass relayPool as prop instead of using non-existent hook
- Correct type signature for addZapTags function
### Changed
- Reorder toolbar buttons for better UX
- DRY up tag extraction with normalizeTags helper
- Use url-metadata package for robust metadata extraction
- Make zap split sliders independent using weights
- Move zap splits to dedicated settings section
- Publish bookmarks to relays in background for better performance
## [0.2.6] - 2025-10-08
### Added
- Home button to bookmark bar
- Configurable zap split for highlights on nostr-native content
## [0.2.5] - 2025-10-07
### Fixed
- Wire preview ref to markdown conversion hook
- Add missing useEffect dependencies for article loading
### Changed
- DRY up highlight classification and URL normalization
- Split highlighting utilities into modules
- Extract highlights panel components
- Extract content rendering hooks
- Split Settings into section components
- Extract event processing utilities
- Split Bookmarks.tsx into smaller hooks and components
## [0.2.4] - 2025-10-07
### Added
- Domain configuration for <https://xn--bris-v0b.com/>
- Public assets and deployment configuration
- Hide bookmarks without content or URL
### Fixed
- Encode/decode URLs in /r/ route to preserve special characters
### Changed
- Cleanup after build fixes
- Stop tracking node_modules/dist
- Update dependencies and dedupe
- Add .gitignore for node_modules and dist
## [0.2.3] - 2025-10-07
### Added
- Parse and display summary tag for nostr articles
- Merge and flatten bookmarks from multiple lists
- Update URL path when opening bookmarks from sidebar
### Fixed
- Ensure bookmarks are sorted newest first after merging lists
- Hide empty bookmarks without content
- Remove encrypted cyphertext display from bookmark list
### Changed
- Remove created date from bookmark list display
## [0.2.2] - 2025-10-06
### Added
- Support for web bookmarks
- Default highlight visibility settings
- Proxy.nostr-relay.app relay to configuration
- Comprehensive logging to settings service
### Fixed
- Handle web bookmarks with URLs in d tag and prevent crash
- Load settings from local cache first to eliminate FOUT
- Ensure fonts are fully loaded before applying styles
- Improve highlight rendering pipeline with comprehensive debugging
### Changed
- Use icon toggle buttons for highlight visibility settings
- Change nostrverse icon from fa-globe to fa-network-wired
## [0.2.1] - 2025-10-05
### Added
- Local relay support and centralize relay configuration
- Optimistic updates for highlight creation
- Enable highlight creation from external URLs
- Add routing support for external URLs
- Add context to highlights
- Boris branding to highlight alt tag
### Fixed
- Properly await account loading from localStorage on refresh
- Add protected routes to prevent logout on page refresh
- Use undo icon for reset to defaults button
- Update local relay port to 10547
### Changed
- Remove dedicated login page, handle login through main UI
- Simplify to single RELAYS constant
## [0.2.0] - 2025-10-05
### Added
- Simple highlight creation feature
- Reset to defaults button in settings
- Load and apply settings upon login
### Fixed
- Replace any types with proper NostrEvent types
- Move FAB to Bookmarks component for proper floating
- Highlight button positioning with scroll
### Changed
- Update color palette to include default friends/nostrverse colors
- Show author name in highlight cards
- Sync highlight level toggles between sidebar and main article text
- Rename 'underlines' to 'highlights' throughout codebase
## [0.1.11] - 2025-10-05
### Added
- Stream highlights progressively as they arrive from relays
### Fixed
- Display article immediately without waiting for highlights to load
- Show highlights immediately when opening panel if already loaded
- Prevent bookmark text from being cut off in compact view
- Correct default highlight color for 'mine' to yellow
### Changed
- Reduce padding between bookmark items and panel edge
- Update default highlight colors to orange for friends and purple for nostrverse
## [0.1.10] - 2025-10-05
### Added
- Three-level highlight system
### Fixed
- Ensure highlights always render on markdown content
- Classify highlights before passing to ContentPanel
- Position toggle buttons directly adjacent to main panel
- Remove redundant setReaderLoading call in error handler
### Changed
- Always show friends and user highlight buttons
- Remove Highlights title and count from panel
## [0.1.9] - 2025-10-05
### Fixed
- Show markdown content immediately when finalHtml is empty
- Prevent highlight bleeding into sidebar
## [0.1.8] - 2025-10-05
### Fixed
- Prevent 'No readable content' flash for markdown articles
- Enable highlights display and scroll-to for markdown content
### Added
- Persist accounts to localStorage
### Changed
- Simplify login by handling it directly in sidebar
## [0.1.7] - 2025-10-05
### Added
- Show highlights in article content and add mode toggle
### Fixed
- Show highlights for nostr articles by skipping URL filter
- Refresh button works without login for article highlights
- Query highlights using both a-tag and e-tag
### Changed
- Keep Bookmarks.tsx under 210 lines by extracting logic
## [0.1.6] - 2025-10-03
### Added
- Native support for rendering Nostr long-form articles
- Display article titles for kind:30023 bookmarks
- Enable clicking on kind:30023 articles to open in reader
- Display article hero images in bookmark views and reader
- Configurable highlight colors
- Highlight style setting
### Fixed
- Use bookmark pubkey for article author instead of tag lookup
- Ensure highlight color CSS variable inherits from parent
### Changed
- Integrate long-form article rendering into existing reader view
- Extract components to keep files under 210 lines
- Make font size and color buttons match icon button size
## [0.1.5] - 2025-10-03
### Added
- Settings panel with NIP-78 storage
- Auto-save for settings with toast notifications
- Reading time estimate to articles
- Font size setting
- Configurable reading font using Bunny Fonts
- Live preview of reading font in settings
- Settings subscription to watch for Nostr updates
### Fixed
- Prevent settings from saving unnecessarily
- Prevent save settings button from being cut off
- Replace custom reading time with reading-time-estimator package
- Update originalHtmlRef when content changes
### Changed
- Reduce file sizes to meet 210 line limit
- Extract settings logic into custom hook
- Consolidate settings initialization on login
- Remove debounce from settings auto-save
## [0.1.4] - 2025-10-03
### Added
- Inline highlight annotations in content panel
- NIP-84 highlights panel with three-pane layout
- Toggle button to show/hide highlight underlines
- Click-to-scroll for highlights
- Pulsing animation when scrolling to highlight
### Fixed
- Apply highlights to markdown content as well as HTML
- Use requestAnimationFrame for highlight DOM manipulation
- Improve HTML highlight matching with DOM manipulation
- Filter highlights panel to show only current article
### Changed
- Use applesauce helpers for highlight parsing
- DRY up highlightMatching to stay under 210 lines
- Change highlights to fluorescent marker style
- Deduplicate highlight events by ID
## [0.1.3] - 2025-10-03
### Added
- View mode switching for bookmarks with compact list view
- Large preview view mode
- Image preview for large view cards
- Hero images using free CORS proxy
### Changed
- Make entire compact list row clickable to open reader
- Make card view timestamp clickable to open event
- Enhance card view design with modern styling
## [0.1.2] - 2025-10-03
### Added
- Open bookmark URLs in reader instead of new window
- localStorage caching for fetched articles
- Collapsible bookmarks sidebar
### Fixed
- Make sidebar and reader scroll independently
- Replace relative-time with date-fns for timestamp formatting
### Changed
- Display timestamps as relative time
- Replace user text with profile image in sidebar header
- Move user info and logout to sidebar header bar
- Reduce IconButton size by 25%
## [0.1.1] - 2025-10-03
### Added
- Classify URLs by type and adjust action buttons
- Collapse/expand functionality for bookmarks sidebar
- IconButton component with square styling
- Resolve nprofile/npub mentions to names in content
### Fixed
- Enforce 210-char truncation for both plain and parsed content
- Use Rules of Hooks correctly
### Changed
- Use IconButton for all icon-only actions to enforce square sizing
- Sort bookmarks by added_at
- Make kind icon square to match IconButton sizing
- Remove colored borders and gradients; keep neutral cards
## [0.1.0] - 2025-10-03
### Added
- Two-pane layout and content fetching pipeline
- ContentPanel component to render readable HTML
- Lightweight readability fetcher via r.jina.ai proxy
- Markdown rendering support with react-markdown and remark-gfm
- READ button to bookmark cards
- Spinner to content loading state
- FontAwesome icons for event kinds
### Fixed
- Show bookmarked event author instead of list signer
- Enable reactive profile fetch via address loader
- Left-align content and constrain images in content panel
### Changed
- Resolve author names using applesauce ProfileModel
- Propagate URL selection through BookmarkList to parent
- Display URLs clearly in individual bookmarks
## [0.0.3] - 2025-10-02
### Added
- Manual decryption for unrecognized event kinds
- Try NIP-44 then NIP-04 for manual decryption
- Detailed debugging for decryption process
- Support for hidden bookmarks decryption
### Fixed
- Surface manually decrypted hidden tags in UI
- Dedupe individual bookmarks by id
### Changed
- Sort individual bookmarks by timestamp
- Increase bookmark loading timeout by 2x
- Extract helpers and event processing
## [0.0.2] - 2025-10-02
### Added
- Fetch all NIP-51 events
- Unlock private bookmarks via applesauce helpers
- Copy-to-clipboard icons for event id and author pubkey
- FontAwesome globe/lock icons
- Display content identically for private/public bookmarks
### Fixed
- Properly configure browser extension signer
- Aggregate list
- Handle applesauce bookmark structure correctly
- Resolve loading state stuck issue
### Changed
- Change bookmarks display from grid to social feed list layout
- Simplify bookmark service using applesauce helpers
- Extract components and utilities to keep files under 210 lines
## [0.0.1] - 2025-10-02
### Added
- Initial release
- Browser extension login support
- NIP-51 bookmark fetching from nostr relays
- User profile display
- Relay pool configuration
- Basic UI with profile resolution
### Changed
- Migrate to applesauce-accounts for proper account management
- Use proper applesauce-loaders for NIP-51 bookmark fetching
- Optimize relay usage following applesauce-relay best practices
- Use applesauce-react event models for better profile handling