Commit Graph

449 Commits

Author SHA1 Message Date
Gigi
00d9fbdbab feat: add home button to bookmark bar
- Add home icon button to sidebar header
- Clicking home button navigates to root path '/'
- Position home button before refresh and settings buttons
2025-10-08 06:34:22 +01:00
Gigi
239ab5763d feat: add configurable zap split for highlights on nostr-native content
- Add zapSplitPercentage setting (default 50%) to UserSettings
- Implement NIP-57 Appendix G zap tags for highlight events
- Add zap tags when creating highlights of nostr-native content
- Split zaps between highlighter and article author based on setting
- Add UI slider in settings to configure split percentage
- Include relay URL in zap tags for metadata lookup
- Only add author zap tag if different from highlighter
2025-10-08 06:32:02 +01:00
Gigi
f4f0de3508 chore(release): v0.2.5 v0.2.5 2025-10-07 22:19:49 +01:00
Gigi
0c3e697df6 fix(reader): wire preview ref to markdown conversion hook
- Update useMarkdownToHTML to return {renderedHtml, previewRef}
- Use returned previewRef in ContentPanel hidden markdown preview
- Resolves article markdown not rendering instantly
2025-10-07 22:16:31 +01:00
Gigi
a9847a8848 fix: add missing useEffect dependencies for article loading
- Fix useBookmarksData hook to include all callback dependencies
- Fix useArticleLoader hook to include all setter function dependencies
- Fix useExternalUrlLoader hook to include all setter function dependencies
- Ensures articles load properly when navigating
2025-10-07 22:04:12 +01:00
Gigi
5ef7d2c41c refactor: DRY up highlight classification and URL normalization
- Extract classifyHighlight and classifyHighlights utilities
- Remove duplicate highlight classification logic from 3 locations
- Use existing normalizeUrl from urlHelpers instead of duplicating
- Reduce code duplication while maintaining functionality
2025-10-07 21:58:17 +01:00
Gigi
e1f704a690 fix: resolve linter errors
- Remove unused imports in ReadingDisplaySettings and useBookmarksData
- Add eslint-disable comments for unavoidable any types from applesauce library
- All lint and type-check validations now pass
2025-10-07 21:57:04 +01:00
Gigi
59ecc29b9c refactor(highlights): split highlighting utilities into modules
- Create textMatching module for text search utilities
- Create domUtils module for DOM manipulation helpers
- Create htmlMatching module for HTML highlight application
- Reduce highlightMatching.tsx from 217 lines to 59 lines
- All files now under 210 lines
2025-10-07 21:54:41 +01:00
Gigi
9ae918f744 refactor(highlights): extract highlights panel components
- Create useFilteredHighlights hook for highlight filtering
- Extract HighlightsPanelCollapsed component
- Extract HighlightsPanelHeader component
- Reduce HighlightsPanel.tsx from 232 lines to 118 lines
2025-10-07 21:53:24 +01:00
Gigi
ac71d0b5a4 refactor(content): extract content rendering hooks
- Create useMarkdownToHTML hook for markdown conversion
- Create useHighlightedContent hook for highlight processing
- Create useHighlightInteractions hook for highlight interactions
- Reduce ContentPanel.tsx from 294 lines to 159 lines
2025-10-07 21:52:05 +01:00
Gigi
7c0d3b909b refactor(settings): split Settings into section components
- Extract ReadingDisplaySettings component
- Extract LayoutNavigationSettings component
- Extract StartupPreferencesSettings component
- Reduce Settings.tsx from 295 lines to 104 lines
2025-10-07 21:50:35 +01:00
Gigi
7b390aae66 refactor(highlights): extract event processing utilities
- Create highlightEventProcessor module with eventToHighlight utility
- Extract dedupeHighlights and sortHighlights functions
- Reduce highlightService.ts from 346 lines to 186 lines
- Eliminate repetitive event-to-highlight conversion code
2025-10-07 21:49:01 +01:00
Gigi
70a830fb66 refactor(bookmarks): split Bookmarks.tsx into smaller hooks and components
- Extract useBookmarksData hook for data fetching
- Extract useContentSelection hook for content selection logic
- Extract useHighlightCreation hook for highlight creation
- Extract useBookmarksUI hook for UI state management
- Create ThreePaneLayout component to reduce JSX complexity
- Reduce Bookmarks.tsx from 392 lines to 209 lines
2025-10-07 21:47:59 +01:00
Gigi
eee7628096 fix: encode/decode URLs in /r/ route to preserve special characters
URLs with special characters like // in https:// were being collapsed by browsers when passed directly in the path. Now using encodeURIComponent when navigating and decodeURIComponent when extracting the URL from the path.
2025-10-07 21:40:43 +01:00
Gigi
298e80cd49 chore: add public assets and deployment configuration
- Add _headers for security headers and asset caching
- Add robots.txt for SEO with sitemap reference
- Add _redirects for SPA client-side routing support
2025-10-07 21:34:46 +01:00
Gigi
5b7ad1d697 chore: add domain configuration for https://xn--bris-v0b.com/
- Add homepage field to package.json
- Add meta tags for SEO and social sharing (Open Graph, Twitter Card)
- Add canonical URL
- Add description meta tag
2025-10-07 21:34:17 +01:00
Gigi
0b5bf59e98 feat: hide bookmarks without content or URL 2025-10-07 18:37:45 +01:00
Gigi
a72a3e3f77 docs: add live app domain to README 2025-10-07 07:19:52 +01:00
Gigi
4b67826b9b chore(release): 0.2.4 v0.2.4 2025-10-07 06:57:49 +01:00
Gigi
4184561583 chore: cleanup after build fixes (remove shims, update locks) 2025-10-07 06:57:42 +01:00
Gigi
ac5b9d339e chore: stop tracking node_modules/dist; fix accidental applesauce-core mutation 2025-10-07 06:48:19 +01:00
Gigi
58596b2998 chore: add .gitignore for node_modules and dist 2025-10-07 06:48:09 +01:00
Gigi
06116c3665 chore: update deps (npm update) and dedupe; lint+types clean 2025-10-07 06:47:01 +01:00
Gigi
8285df487f revert: use documented applesauce imports; remove alias shim
- Import EventStore from 'applesauce-core'
- Remove Vite alias/shim and node:path reference
- Keep config minimal and standard-compliant
2025-10-07 06:24:33 +01:00
Gigi
d3fad33948 build(vite): alias async-event-store to shim to avoid Vercel resolution error
- Add alias for applesauce-core/dist/event-store/async-event-store.js
- Provide minimal shim module so bundler resolves cleanly
- Use node:path and import.meta.url to build absolute path
- Keep linter strict (added ts-expect-error for node path types)
2025-10-07 06:22:54 +01:00
Gigi
6bf31c124c build: patch applesauce-core dist to avoid async-event-store re-export during bundling
- Remove re-export of async-event-store.js in event-store/index.js
- This is applied via patch-package in postinstall later (to be added)
2025-10-07 06:21:21 +01:00
Gigi
f455f61795 build: deep import EventStore to bypass re-export resolution on Vercel
- Import EventStore from applesauce-core/dist/event-store/event-store.js
- Add TS module declaration shim for deep import typing
- No functional changes, fixes Vercel bundling for async-event-store.js
2025-10-07 06:15:48 +01:00
Gigi
1d4ad4e2fa revert: remove custom applesauce resolver plugin from Vite config
- Remove applesauceResolver workaround
- Keep Vite config clean and standards-compliant
- We'll address applesauce-core resolution via proper imports and package fixes
2025-10-07 06:07:52 +01:00
Gigi
c691e83cb6 config: add custom plugin to resolve applesauce-core internals
- Create applesauceResolver plugin to manually resolve relative imports
- Bypasses restrictive exports field in applesauce-core@4.0.0
- Fixes Rollup resolution error for ./async-event-store.js
- Workaround for npm package exports bug blocking internal imports
2025-10-07 06:05:52 +01:00
Gigi
b4ceaceedc refactor: use main package exports instead of subpath imports
- Import Helpers from 'applesauce-core' instead of 'applesauce-core/helpers'
- Import Blueprints from 'applesauce-factory' instead of 'applesauce-factory/blueprints'
- Use namespace exports as documented in applesauce tutorial
- Fixes Vercel build issue with internal module resolution
- Follows recommended import patterns from applesauce docs
2025-10-07 06:04:07 +01:00
Gigi
a5710b3611 config: force SSR noExternal for applesauce packages
- Add ssr.noExternal to force pre-bundling of applesauce packages
- Add mainFields to resolve module entry points
- Add rollupOptions to ensure ESM output format
- Workaround for restrictive exports map in applesauce-core@4.0.0
2025-10-07 05:58:52 +01:00
Gigi
2cea8fc2fa config: add module resolution options for Vercel build
- Add resolve conditions for better ESM handling
- Configure esbuildOptions with resolveExtensions
- Add commonjsOptions to handle mixed ESM/CJS modules
- Attempt to fix applesauce-core async-event-store resolution issue
2025-10-07 05:57:36 +01:00
Gigi
6958ee7d66 chore: remove applesauce reference folder from git tracking
- applesauce folder is in .gitignore and used only for local reference
- npm packages are used in production, not the local workspace
2025-10-07 05:54:15 +01:00
Gigi
7af0827019 config: add explicit module resolution for Vercel
- Add resolve.extensions to help with .js module resolution
- Include applesauce packages in optimizeDeps for better bundling
- Attempt to fix Vercel build issue with async-event-store.js
2025-10-07 05:52:16 +01:00
Gigi
559c288215 build: update dist with manual NIP-78 event creation 2025-10-07 05:50:26 +01:00
Gigi
85aa77dba8 revert: back to manual NIP-78 event creation
- AppDataBlueprint is not available in npm package (only in local workspace)
- Revert to manual event construction using factory.create()
- This approach works on Vercel's build environment
- Added comment explaining why we can't use the blueprint
2025-10-07 05:48:50 +01:00
Gigi
803df2d22b refactor: use AppDataBlueprint via namespace import
- Import blueprints as namespace: 'import * as Blueprints from applesauce-factory/blueprints'
- Use Blueprints.AppDataBlueprint with proper factory API
- Cleaner than manual event construction
- Should work with Vercel as namespace imports don't require direct named exports
2025-10-07 05:46:20 +01:00
Gigi
a84fbe97b0 fix: create NIP-78 events manually without blueprint import
- Remove AppDataBlueprint import that's not available in npm package
- Create application data events directly using factory.create()
- Manually construct event with kind 30078, d-tag identifier, and JSON content
- Fixes Vercel build by avoiding unavailable blueprint exports
2025-10-07 05:44:59 +01:00
Gigi
21545fc76a fix: avoid deep imports for Vercel compatibility
- Define APP_DATA_KIND constant inline (30078 for NIP-78)
- Implement getAppDataContent helper inline to parse JSON
- Import AppDataBlueprint from 'applesauce-factory/blueprints' main export
- Fixes Vercel build errors with deep package imports
2025-10-07 05:39:41 +01:00
Gigi
303d5a0ac7 fix: correct AppDataBlueprint import path for Vercel build
- Change import from 'applesauce-factory/blueprints' to 'applesauce-factory/blueprints/app-data'
- Fixes TypeScript error TS2305 in production build
2025-10-07 05:36:45 +01:00
Gigi
59b7816312 chore: bump version to 0.2.3 v0.2.3 2025-10-07 05:35:32 +01:00
Gigi
3f1066ca71 build: update production build artifacts
- Update dist/index.html with latest changes
- Includes all features from recent commits
2025-10-07 05:34:20 +01:00
Gigi
744642e2b7 fix: ensure bookmarks are sorted newest first after merging lists
- Re-sort all individual bookmarks after flattening from multiple lists
- Sort by added_at first, then fall back to created_at
- Prevents interleaving of sorted lists from breaking overall order
- Ensures newest bookmarks always appear at the top
2025-10-07 05:25:50 +01:00
Gigi
fd28a6e171 feat: parse and display summary tag for nostr articles
- Extract 'summary' tag from kind:30023 article bookmarks
- Display summary in place of truncated content for articles
- Show summary in all view modes (compact, cards, large)
- Add article-summary CSS class for potential styling
- Follows NIP-23 long-form content specification
2025-10-07 05:12:11 +01:00
Gigi
0124de8318 feat: merge and flatten bookmarks from multiple lists
- Extract all individual bookmarks from all bookmark lists
- Display them in a single flat list (already sorted by date in service)
- Remove wrapper metadata like 'N bookmarks in this list'
- Show all bookmarks together, newest first
- Implements NIP-51 and NIP-B0 bookmark list merging
2025-10-07 05:06:00 +01:00
Gigi
b37aac0a33 fix: hide empty bookmarks without content
- Filter out individual bookmarks that have no content
- Keep articles (kind:30023) and web bookmarks (kind:39701) even if empty
- Prevents display of placeholder items showing only icons and timestamps
2025-10-07 05:02:36 +01:00
Gigi
81ef047a31 chore: remove created date from bookmark list display
- Remove bookmark-meta div showing creation timestamp
- Cleaner UI without redundant date information
2025-10-07 04:59:55 +01:00
Gigi
704033e6cb fix: remove encrypted cyphertext display from bookmark list
- Remove display of top-level bookmark.content and bookmark.parsedContent
- These fields contain encrypted data that shouldn't be shown to users
- Individual bookmarks are already displayed properly within each list
2025-10-07 04:56:42 +01:00
Gigi
d59d27419e feat: update URL path when opening bookmarks from sidebar
- Add URL navigation when selecting bookmarks
- Navigate to /a/:naddr for nostr articles (kind:30023)
- Navigate to /r/:url for external URLs
- Encode article bookmarks to naddr format on selection
2025-10-07 04:55:30 +01:00
Gigi
f8d3fac149 chore: bump version to 0.2.2 v0.2.2 2025-10-06 20:57:42 +01:00