- Add Nostrich banner image at top of card
- Change title to "Nostr Market" with intro description
- Add expandable sections: What is Nostr?, Getting Started, For Merchants, For Customers, Contributors
- Add links: Market Client, API Documentation, NIP-15 Specification, GitHub Issues
- Add Ben Weeks to contributors
- Mention NIP-15 interoperability with other marketplaces (Amethyst, Plebeian Market)
Closes#159🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove asterisks from United Kingdom and United States
- Move China to alphabetical position
- Remove "Flat rate" option
- Alphabetize country list
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Country list fixes will come from PR #156 instead.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add search filter input to zones table
- Make all columns sortable with default sort by name
- Fix country list: alphabetize, remove asterisks from UK/US, remove "Flat rate"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Layout now shows: [Default shipping cost] [Currency ▼]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove asterisks from UK/US country names (#153)
- Remove unclear "Flat rate" option (#153)
- Alphabetize country list, move China to correct position (#153)
- Rename "Unit" to "Currency" (#154)
- Rename cost label to "Default shipping cost" (#154)
- Add currency suffix to cost field (#154)
- Add hint about per-product shipping costs (#154)
- Add validation for whole number sats (#155)
- Disable submit button when sats validation fails (#155)
- Show error message for invalid sats values (#155)
Closes#153, #154, #155🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extract conditional SQL clause to variable to fix E501 (line > 88 chars)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add generate_logo.py script to create icon programmatically
- New shop icon with striped awning and display windows
- Consistent purple color scheme with Nostr Proxy extension
- Update config.json to reference new icon
Closes#150🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The get_orders and get_orders_for_stall functions were generating
malformed SQL when filtering by additional parameters like public_key.
Before: WHERE merchant_id = :merchant_id public_key = :public_key
After: WHERE merchant_id = :merchant_id AND public_key = :public_key
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Call nostrclient /relays API directly from frontend for accurate status
- Show correct error messages from API response (body.detail)
- Add orange warning state for no relays configured
- Show relay count when connected (X of Y connected)
- Simplify status logic: 200 = green, no relays = orange, error = red
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /api/v1/status endpoint to check nostrclient availability
- Add color-coded "Connect" button (red/orange/green) based on status
- Show dropdown with connection details (relays count, websocket status)
- Add warning banner when nostrclient extension is not available
- Update info card with description of extension functionality
Closes#132🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reorganizes the merchant dashboard into a tab-based layout:
- Tabs: Merchant | Shipping | Stalls | Products | Messages | Orders
- Publish dropdown with NIP-15 options (NIP-99 disabled/coming soon)
- Consistent UI patterns across all tabs:
- Search/filter/buttons aligned right
- Actions column on right side of tables
- Equal-width tabs
- Stalls tab: popup edit dialog, navigation to Products/Orders
- Products tab: filter icon dropdown for stall filtering
- Modular component structure for each tab section
- Fixed product API calls to use correct endpoints
Closes#119🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use window.g.allowedCurrencies instead of fetching all currencies from
the API, so currency dropdowns only show currencies configured by the
admin in LNbits settings.
Closes#116🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Refactor merchant details layout for improved responsiveness and styling in index.html
* Revamp key pair component layout with improved styling and functionality. Added a header with a toggle for showing the private key, enhanced QR code display for both public and private keys, and included copy buttons for better user interaction.
Update key pair component styling and functionality: adjust QR code dimensions, improve key display format with truncation, and refine button margins for enhanced user experience.
Add 'show-buttons' prop to QR code components in key pair template for improved functionality
Update key pair component layout to use 'col-sm-6' for responsive design of QR code sections, enhancing display on smaller screens.
* Enhance direct messages component layout with improved styling and responsiveness. Updated class names for better alignment, added ellipsis for long customer labels, and modified button styles for consistency. Improved select options display with custom templates for better user experience.
* Refactor customer label generation in direct messages component for improved readability. Added checks for undefined customer data, enhanced label formatting with truncation for long descriptions, and adjusted unread message display format.
* make format