Commit Graph

29 Commits

Author SHA1 Message Date
Gigi
c536de0144 chore: bump version to 0.1.9 2025-10-05 19:07:06 +01:00
Gigi
560a4a6785 chore: bump version to 0.1.8 2025-10-05 13:46:27 +01:00
Gigi
7a3dd421fb chore: bump version to 0.1.7 2025-10-05 12:55:10 +01:00
Gigi
9b0c59b1ae feat: add native support for rendering Nostr long-form articles (NIP-23)
- Install react-router-dom for routing support
- Create Article component to decode naddr and fetch/render articles
- Add /a/:naddr route to App.tsx for article viewing
- Use applesauce relay pool patterns for event fetching
- Render articles with markdown using ReactMarkdown
- Support article metadata (title, image, published date, summary)
2025-10-05 08:08:34 +01:00
Gigi
8faa2e2de0 chore: bump version to 0.1.6 2025-10-05 04:17:44 +01:00
Gigi
e771b9778f chore: bump version to 0.1.5 2025-10-05 04:05:05 +01:00
Gigi
cc0b27f7cd fix: replace custom reading time with reading-time-estimator package
- Remove custom readingTime.ts implementation
- Install reading-time-estimator package (browser-compatible)
- Update ContentPanel to use named import from reading-time-estimator
- Fixes browser compatibility issues with reading-time package
- All linting and type checks pass
2025-10-05 03:35:22 +01:00
Gigi
2719ad3602 feat: add reading time estimate to articles
- Install reading-time package
- Calculate reading time from article content (html or markdown)
- Display reading time with clock icon in article header
- Strip HTML tags for accurate word count
- Style reading-time indicator similar to highlights
- Shows estimated reading time (e.g., '5 min read')
2025-10-05 03:28:36 +01:00
Gigi
1b8c276529 chore: upgrade applesauce packages to v4.0.0
- Update all applesauce packages from 3.1.0 to 4.0.0
- Add applesauce-factory dependency
- Version 4.0.0 includes app-data helpers needed for NIP-78
2025-10-05 02:35:28 +01:00
Gigi
1bcaa1998d chore: bump version to 0.1.4 2025-10-04 22:14:00 +01:00
Gigi
e83976e5e0 feat: rename app from Markr to Boris
- Update package.json name field
- Update README.md title and references
- Update HTML page title
2025-10-03 14:58:28 +02:00
Gigi
7e9cdfb0e1 chore: bump version to 0.1.3 2025-10-03 09:52:03 +02:00
Gigi
5727a38a7e chore: bump version to 0.1.2 2025-10-03 09:37:56 +02:00
Gigi
5ea81bda8e fix(deps): replace relative-time with date-fns for timestamp formatting
- Replace relative-time package (which uses Temporal API) with date-fns
- Update formatDate to use formatDistanceToNow from date-fns
- Remove relative-time type declarations
- Apply fix to both helpers.ts and bookmarkUtils.tsx
- Fix runtime error: relative-time expects Temporal objects, not Date objects
- date-fns provides better compatibility with current JavaScript standards
2025-10-03 09:25:05 +02:00
Gigi
0d956ed692 feat(ui): display timestamps as relative time
- Install relative-time package from npm
- Update formatDate functions to use relative-time instead of toLocaleDateString
- Add TypeScript type definitions for relative-time module
- Show human-friendly relative times (e.g., '2 hours ago', 'yesterday')
- Apply to all timestamp displays (bookmark dates, created dates)
2025-10-03 02:03:31 +02:00
Gigi
86de9c9f1f chore(release): bump version to 0.1.1 2025-10-03 01:04:20 +02:00
Gigi
acce3ad4e2 chore(release): bump version to 0.1.0 2025-10-03 00:23:03 +02:00
Gigi
80408148fb feat: add react-markdown and remark-gfm for markdown rendering 2025-10-02 23:45:09 +02:00
Gigi
b64fd6cedb chore(release): bump version to 0.0.3 2025-10-02 21:39:14 +02:00
Gigi
7d26372878 feat(ui): add FontAwesome globe/lock icons; render content identically for private/public 2025-10-02 10:44:06 +02:00
Gigi
7fd8e5341e chore: ignore applesauce directory in ESLint configuration
- Added 'applesauce' to ignorePatterns in package.json
- Prevents linting errors from dependency code
- Maintains focus on project-specific code quality
- ESLint now runs cleanly with 0 errors and 0 warnings
2025-10-02 09:44:57 +02:00
Gigi
9c34e8d806 chore: bump version to 0.0.2
- Version bump for working bookmark fetching functionality
- Individual bookmark display is now working correctly
2025-10-02 09:16:15 +02:00
Gigi
c1e0e82704 feat: integrate applesauce-content for proper content parsing and rendering
- Install applesauce-content package for content parsing
- Use getParsedContent() to parse nostr content according to applesauce patterns
- Create proper TypeScript interfaces for ParsedNode and ParsedContent
- Add renderParsedContent() component to render parsed content with proper styling
- Handle mentions, links, and text content with appropriate styling
- Add CSS styles for nostr-mention and nostr-link classes
- Follow applesauce-content documentation patterns for content rendering
- Maintain type safety with proper interfaces instead of 'any' types

This follows the applesauce-content documentation exactly as shown
in the examples, providing proper content parsing and rendering.
2025-10-02 08:33:00 +02:00
Gigi
208dbb17cf fix: resolve all linting and TypeScript issues
- Set up comprehensive ESLint configuration with TypeScript support
- Fix React import issues by adding explicit React imports
- Replace 'any' types with proper TypeScript types (unknown, specific interfaces)
- Add proper type definitions for addressLoader function signature
- Make relays parameter optional in addressLoader interface
- Fix TypeScript strict null checks and function call signatures
- Ensure all code passes ESLint with zero warnings
- Verify TypeScript compilation with no errors
- Maintain strict linting rules without reducing code quality

All linting and type checking now passes successfully.
2025-10-02 07:32:12 +02:00
Gigi
b4ce082b91 refactor: use proper applesauce-loaders for NIP-51 bookmark fetching
- Replace manual event fetching with applesauce Address Loader
- Use Loaders.createAddressLoader() for proper replaceable event loading
- Configure loader with eventStore, bufferTime, and relay hints
- Remove manual RxJS subscription handling in favor of applesauce patterns
- Add applesauce-loaders dependency for specialized loading methods
- Clean up unused imports and variables
- Follow applesauce best practices for event loading

This implements the proper applesauce pattern for fetching kind:10003
bookmark events as recommended in the applesauce-loaders documentation.
2025-10-02 07:29:37 +02:00
Gigi
b245a11ade fix: implement proper NIP-51 bookmark fetching from nostr relays
- Add RelayPool to connect to nostr relays (damus.io, nos.lol, snort.social)
- Fix bookmark fetching to actually query relays instead of empty local store
- Use eventStore.filters() with Observable subscription to fetch kind 10003 events
- Add proper RxJS imports for takeUntil and timer
- Implement 5-second timeout for relay queries
- Add applesauce-relay dependency for relay connectivity
- Fix critical bug where bookmarks were never fetched from network

This ensures we're actually displaying kind:10003 bookmark events from the
logged-in user as specified in NIP-51, not just querying an empty local store.
2025-10-02 07:28:12 +02:00
Gigi
0369ece6f4 refactor: migrate to applesauce-accounts for proper account management
- Replace manual WebSocket connections with applesauce-accounts
- Use ExtensionAccount.fromExtension() for nostr browser extension integration
- Add AccountsProvider to component tree for account management
- Use useActiveAccount hook to get current user account
- Simplify user display to show formatted public key (profile fetching TODO)
- Remove manual profile fetching WebSocket code
- Improve architecture with proper applesauce account system
- Add applesauce-accounts dependency to package.json

This provides a more robust and standardized approach to nostr account
management using the applesauce ecosystem.
2025-10-02 07:24:37 +02:00
Gigi
f99c29ce78 chore: set initial version to 0.0.1
- Update package.json version from 0.1.0 to 0.0.1
- This represents the initial MVP release of markr
2025-10-02 07:18:34 +02:00
Gigi
5d53a827e0 feat: initialize markr nostr bookmark client
- Add project structure with TypeScript, React, and Vite
- Implement nostr authentication using browser extension (NIP-07)
- Add NIP-51 compliant bookmark fetching and display
- Create minimal UI with login and bookmark components
- Integrate applesauce-core and applesauce-react libraries
- Add responsive styling with dark/light mode support
- Include comprehensive README with setup instructions

This is a minimal MVP for a nostr bookmark client that allows users to
view their bookmarks according to NIP-51 specification.
2025-10-02 07:17:07 +02:00