Files
boris/CHANGELOG.md
2025-10-11 08:40:05 +01:00

25 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[0.4.3] - 2025-10-11

Added

  • Mark as read functionality for articles (NIP-25)
    • Button at the end of each article to mark as read with 📚 emoji
    • Creates kind:7 reactions for nostr-native articles (/a/ paths)
    • Creates kind:17 reactions for external websites (/r/ paths)
    • Button shows loading state while publishing reaction
    • Only visible when user is logged in
  • Highlight deletion with confirmation dialog (NIP-09)
    • Small delete button (trash icon) on highlight items
    • Only visible for user's own highlights
    • Confirmation dialog prevents accidental deletions
    • Styled to match relay indicator (subtle, same size)
    • Removes highlights from UI immediately after deletion request
  • /me page showing user's recent highlights
    • Accessible by clicking profile picture in bookmark sidebar
    • Displays all highlights created by the logged-in user
    • Uses same rendering as Settings and Explore pages
    • Includes highlight count in header
  • Confirmation dialog component
    • Reusable modal with danger/warning/info variants
    • Backdrop blur effect
    • Mobile-responsive design
    • Prevents accidental destructive actions

Changed

  • Relay status indicator on mobile now displays in compact mode
    • Shows only airplane icon by default (44x44px touch target)
    • Tap to expand for full connection details
    • Reduces screen clutter on mobile while keeping info accessible
    • Smooth transition between compact and expanded states
    • Desktop view remains unchanged (always shows full details)

[0.4.2] - 2025-10-11

Added

  • NIP-19 identifier resolution in article content (NIP-19, NIP-27)
    • Support for nostr:npub1..., nostr:note1..., nostr:nprofile1..., nostr:nevent1..., nostr:naddr1...
    • Converts nostr: URIs to clickable links with human-readable labels
    • Automatically fetches and displays article titles for naddr references
    • Falls back to identifier when title fetch fails
  • Auto-hide mobile UI buttons on scroll down
    • Floating bookmark/highlights buttons hide when scrolling down
    • Buttons reappear when scrolling up for distraction-free reading
    • Smooth opacity transitions for better UX
  • Scroll direction detection hook (useScrollDirection)
    • Supports both window and element-based scroll detection
    • Configurable threshold and enable/disable options

Changed

  • Article references (naddr) now link internally to /a/{naddr} instead of external njump.me
  • Sidebar auto-closes on mobile when navigating to content via routes
    • Handles clicking on blog posts in Explore view
    • Complements existing sidebar auto-close for bookmarks
  • Markdown processing now async to support article title resolution
  • Article title resolution fetches titles in parallel for better performance

Fixed

  • Mobile button scroll detection now correctly monitors main pane element
    • Previously monitored window scroll which didn't work on mobile
    • Content scrolls within .pane.main div on mobile devices
  • All ESLint warnings and TypeScript type errors resolved
    • Added react-hooks plugin to ESLint configuration
    • Fixed exhaustive-deps warnings in components
    • Added block scoping to switch case statements
    • Corrected type references for nostr-tools decode result

[0.4.1] - 2025-10-10

Fixed

  • Long article summaries overlapping with hero image content on mobile devices
  • Article summary now 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 now uses zoom-to-fit approach with viewport-based sizing
  • Hero image height on mobile set to 50vh (constrained between 280px-400px)
  • 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 (useIsMobile, useIsTablet, useIsCoarsePointer)
  • 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 (full-screen sheet style)
  • Mobile-optimized toast notifications (bottom position)
  • Dynamic viewport height support (100dvh)
  • Mobile highlights panel as overlay with toggle button

Changed

  • Sidebar now displays as overlay drawer on mobile (≤768px)
  • 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 (fixes 404 errors on page refresh)

0.3.7 - 2025-10-10

Fixed

  • Logout button functionality - now properly clears active account using clearActive() method

0.3.6 - 2025-10-10

Added

  • Compact date format for highlights (now, 5m, 3h, 2d, 1mo, 1y)
  • 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 (URLs, SEO metadata, and documentation)

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 (instead of immediately showing "Offline")
  • 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 (supports CMD+click to open in new tab)
  • 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 - rebroadcast local events when back online
  • 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 (localhost:4869)
  • 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 (NIP-B0, kind:39701)
  • 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 (remove shims, update locks)
  • 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 (NIP-B0, kind:39701)
  • 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 (previous and next sentences)
  • 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 (DRY)

0.2.0 - 2025-10-05

Added

  • Simple highlight creation feature (FAB style)
  • 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 (#ffff00)

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 (mine/friends/nostrverse)

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 now 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 (NIP-23)
  • 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 (marker & underline)

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 (33px)

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 (recently added first)
  • 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 NOW 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 (newest first)
  • 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(10003) + set(30001)
  • 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