feat(app): content detection overhaul, apps tab, chat UX, web search

- Overhaul content detection: expand all query/response classifiers with
  broader AI response patterns (news, music, books, TV, places, websites)
- Add Nostr detection (isNostrQuery, isNostrLikeResponse) and App detection
  (isAppQuery, isAppLikeResponse) classifiers
- Add bare domain extraction from AI text (e.g. "check out damus.io")
- Add Apps tab with curated database of ~30 Nostr + Bitcoin ecosystem apps
  (clients, wallets, privacy tools, node software, dev tools)
- Create AppsGrid + AppDetail components with search, filtering, how-to
- Wire app extraction and Nostr detection into useContentPanel
- Add PromptIndex badges for Apps and Nostr tabs
- Chat UX: dedicated history button, settings modal (memory + advanced),
  fix collapsed chat v-if/v-else chain bug
- Web search: add Brave Search API as primary backend, expand SearXNG pool
- iOS HIG: comprehensive mobile UX rules in cursor rules + CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-04 05:03:03 +00:00
co-authored by Claude Opus 4.6
parent 5d4367eaff
commit 84ccdc7048
36 changed files with 2295 additions and 321 deletions
+372
View File
@@ -0,0 +1,372 @@
export interface AppEntry {
id: string
name: string
description: string
longDescription: string
category: 'nostr-client' | 'lightning-wallet' | 'bitcoin-wallet' | 'privacy' | 'node' | 'dev-tool' | 'relay'
platforms: ('ios' | 'android' | 'web' | 'desktop' | 'cli' | 'nodeos')[]
url: string
icon?: string
keywords: string[]
howTo?: string[]
relatedApps?: string[]
}
export const APP_DATABASE: AppEntry[] = [
// ─── Nostr Clients ─────────────────────────────────────────────
{
id: 'damus',
name: 'Damus',
description: 'Native iOS Nostr client with Lightning zaps',
longDescription: 'Damus is the premier Nostr client for iOS. It provides a Twitter-like experience on the Nostr protocol with native Lightning Network integration for zaps (tips). Features include relay management, DMs, profile customization, and a smooth native UI.',
category: 'nostr-client',
platforms: ['ios'],
url: 'https://damus.io',
keywords: ['damus', 'damus.io', 'damus app'],
howTo: [
'Download Damus from the App Store',
'Create a new Nostr identity or import your nsec key',
'Add relays (defaults are provided)',
'Follow people by their npub or NIP-05 address',
'Connect a Lightning wallet for zaps',
],
relatedApps: ['primal', 'amethyst', 'snort'],
},
{
id: 'primal',
name: 'Primal',
description: 'Fast Nostr client with built-in wallet and caching',
longDescription: 'Primal is a high-performance Nostr client available on iOS, Android, and web. It features a built-in Lightning wallet (via Primal Wallet), advanced search and discovery through its caching layer, and a polished social media experience. The caching infrastructure makes it one of the fastest Nostr clients.',
category: 'nostr-client',
platforms: ['ios', 'android', 'web'],
url: 'https://primal.net',
keywords: ['primal', 'primal.net', 'primal app', 'primal wallet'],
howTo: [
'Visit primal.net or download the mobile app',
'Create a new account or log in with your nsec/extension',
'Set up your Primal Wallet for sending and receiving zaps',
'Explore trending content and follow accounts',
],
relatedApps: ['damus', 'snort', 'alby'],
},
{
id: 'snort',
name: 'Snort',
description: 'Clean web-based Nostr client',
longDescription: 'Snort is a web-based Nostr client with a clean, minimal interface. It supports NIP-07 browser extensions for key management, Lightning zaps, image/video uploads, and relay management. Great for users who prefer a browser-based experience.',
category: 'nostr-client',
platforms: ['web'],
url: 'https://snort.social',
keywords: ['snort', 'snort.social'],
howTo: [
'Visit snort.social in your browser',
'Install a NIP-07 extension (like nos2x or Alby) for key management',
'Create or import your Nostr identity',
'Configure relays and start posting',
],
relatedApps: ['primal', 'damus', 'alby'],
},
{
id: 'amethyst',
name: 'Amethyst',
description: 'Feature-rich Android Nostr client',
longDescription: 'Amethyst is the most popular Nostr client for Android. It supports a wide range of NIPs including long-form content, communities, live streams, and marketplace features. Deep Lightning integration for zaps and a highly customizable interface.',
category: 'nostr-client',
platforms: ['android'],
url: 'https://github.com/vitorpamplona/amethyst',
keywords: ['amethyst', 'amethyst nostr', 'amethyst app'],
howTo: [
'Install from Google Play Store or F-Droid',
'Create a new keypair or import existing nsec',
'Configure your relay list',
'Connect a Lightning wallet for zaps',
],
relatedApps: ['damus', 'primal', 'snort'],
},
{
id: 'coracle',
name: 'Coracle',
description: 'Relay-focused web Nostr client',
longDescription: 'Coracle is a web-based Nostr client that puts relay management front and center. It features excellent relay discovery, community-based feeds, and a focus on the social graph. Built with privacy and decentralization principles in mind.',
category: 'nostr-client',
platforms: ['web'],
url: 'https://coracle.social',
keywords: ['coracle', 'coracle.social'],
relatedApps: ['snort', 'nostrudel'],
},
{
id: 'iris',
name: 'Iris',
description: 'Nostr client with built-in key management',
longDescription: 'Iris is a Nostr client that focuses on ease of use with built-in key management. Available on web and as a desktop app. Features include DMs, profile management, and a clean interface.',
category: 'nostr-client',
platforms: ['web', 'desktop'],
url: 'https://iris.to',
keywords: ['iris', 'iris.to', 'iris nostr'],
relatedApps: ['snort', 'primal'],
},
{
id: 'nostrudel',
name: 'noStrudel',
description: 'Power-user Nostr web client',
longDescription: 'noStrudel is a feature-packed web client for Nostr power users. It supports a wide range of NIPs, advanced relay management, DVMs (Data Vending Machines), and experimental Nostr features. Great for developers and advanced users.',
category: 'nostr-client',
platforms: ['web'],
url: 'https://nostrudel.ninja',
keywords: ['nostrudel', 'nostrudel.ninja', 'no strudel'],
relatedApps: ['coracle', 'snort'],
},
// ─── Lightning Wallets ──────────────────────────────────────────
{
id: 'phoenix',
name: 'Phoenix',
description: 'Non-custodial Lightning wallet by ACINQ',
longDescription: 'Phoenix is a self-custodial Lightning wallet built by ACINQ (the team behind Eclair). It automatically manages channels and liquidity, making Lightning payments as simple as on-chain transactions. No channel management needed — just send and receive.',
category: 'lightning-wallet',
platforms: ['ios', 'android'],
url: 'https://phoenix.acinq.co',
keywords: ['phoenix', 'phoenix wallet', 'acinq', 'phoenix.acinq.co'],
howTo: [
'Download Phoenix from App Store or Play Store',
'Back up your 12-word seed phrase securely',
'Receive your first payment — a channel opens automatically',
'Use for Lightning payments, zaps, and daily spending',
],
relatedApps: ['breez', 'zeus', 'mutiny'],
},
{
id: 'breez',
name: 'Breez',
description: 'Non-custodial Lightning wallet with POS features',
longDescription: 'Breez is a non-custodial Lightning wallet that doubles as a point-of-sale system for merchants. Features include a built-in podcast player with streaming sats, fiat on-ramps, and seamless channel management via the Breez SDK.',
category: 'lightning-wallet',
platforms: ['ios', 'android'],
url: 'https://breez.technology',
keywords: ['breez', 'breez wallet', 'breez.technology', 'breez sdk'],
relatedApps: ['phoenix', 'zeus', 'mutiny'],
},
{
id: 'zeus',
name: 'Zeus',
description: 'Lightning node management and wallet',
longDescription: 'Zeus is a mobile Lightning wallet that can connect to your own Lightning node (LND, Core Lightning, or Eclair) or run an embedded node. Full control over channels, routing, and node management from your phone.',
category: 'lightning-wallet',
platforms: ['ios', 'android'],
url: 'https://zeusln.com',
keywords: ['zeus', 'zeus wallet', 'zeusln', 'zeus lightning', 'zeusln.com'],
relatedApps: ['phoenix', 'breez'],
},
{
id: 'alby',
name: 'Alby',
description: 'Lightning browser extension and NIP-07 signer',
longDescription: 'Alby is a browser extension that brings Lightning payments and Nostr key management to every website. It acts as a NIP-07 signer for Nostr clients and enables one-click Lightning payments across the web. Also offers Alby Hub for self-custodial Lightning.',
category: 'lightning-wallet',
platforms: ['web', 'desktop'],
url: 'https://getalby.com',
keywords: ['alby', 'getalby', 'alby extension', 'alby hub', 'getalby.com', 'nip-07'],
howTo: [
'Install the Alby browser extension',
'Create a new Lightning wallet or connect existing one',
'Use Alby to sign in to Nostr web clients',
'Send zaps and Lightning payments from any website',
],
relatedApps: ['snort', 'phoenix', 'primal'],
},
{
id: 'mutiny',
name: 'Mutiny Wallet',
description: 'Self-custodial Lightning wallet in the browser',
longDescription: 'Mutiny is a self-custodial Bitcoin and Lightning wallet that runs entirely in your web browser using WebAssembly. Features Nostr integration, fedimint support, and LSP-managed channels. Privacy-focused with optional Tor support.',
category: 'lightning-wallet',
platforms: ['web', 'ios', 'android'],
url: 'https://mutinywallet.com',
keywords: ['mutiny', 'mutiny wallet', 'mutinywallet.com'],
relatedApps: ['phoenix', 'breez'],
},
{
id: 'wallet-of-satoshi',
name: 'Wallet of Satoshi',
description: 'Simple custodial Lightning wallet',
longDescription: 'Wallet of Satoshi is the easiest way to get started with Lightning. As a custodial wallet, it requires no channel management — just install and start sending/receiving. Great for beginners, though advanced users may prefer self-custodial options.',
category: 'lightning-wallet',
platforms: ['ios', 'android'],
url: 'https://www.walletofsatoshi.com',
keywords: ['wallet of satoshi', 'walletofsatoshi', 'wos'],
relatedApps: ['phoenix', 'breez'],
},
// ─── Bitcoin Wallets ────────────────────────────────────────────
{
id: 'sparrow',
name: 'Sparrow Wallet',
description: 'Full-featured Bitcoin desktop wallet',
longDescription: 'Sparrow is the gold standard for Bitcoin desktop wallets. It supports hardware wallets, multisig, coin control, PSBT, and connects to your own node via Electrum. Excellent for privacy-conscious users with features like PayJoin and whirlpool integration.',
category: 'bitcoin-wallet',
platforms: ['desktop'],
url: 'https://sparrowwallet.com',
keywords: ['sparrow', 'sparrow wallet', 'sparrowwallet.com'],
howTo: [
'Download from sparrowwallet.com (verify GPG signature)',
'Connect to your own Electrum server or use a public one',
'Create a new wallet or import from hardware wallet',
'Enable coin control for better privacy',
],
relatedApps: ['bluewallet', 'nunchuk', 'coldcard'],
},
{
id: 'bluewallet',
name: 'BlueWallet',
description: 'Mobile Bitcoin and Lightning wallet',
longDescription: 'BlueWallet is a popular open-source Bitcoin wallet for iOS and Android. Supports on-chain and Lightning (via LNDHub), multisig vaults, watch-only wallets, and coin control. Clean interface suitable for both beginners and advanced users.',
category: 'bitcoin-wallet',
platforms: ['ios', 'android', 'desktop'],
url: 'https://bluewallet.io',
keywords: ['bluewallet', 'blue wallet', 'bluewallet.io'],
relatedApps: ['sparrow', 'phoenix'],
},
{
id: 'nunchuk',
name: 'Nunchuk',
description: 'Collaborative multisig Bitcoin wallet',
longDescription: 'Nunchuk specializes in collaborative multisig for Bitcoin self-custody. Features include assisted multisig with hardware wallets, inheritance planning, spending policies, and a clean mobile/desktop experience. Ideal for securing larger amounts.',
category: 'bitcoin-wallet',
platforms: ['ios', 'android', 'desktop'],
url: 'https://nunchuk.io',
keywords: ['nunchuk', 'nunchuk.io', 'nunchuk wallet'],
relatedApps: ['sparrow', 'coldcard'],
},
{
id: 'coldcard',
name: 'Coldcard',
description: 'Air-gapped Bitcoin hardware signer',
longDescription: 'Coldcard is a Bitcoin-only hardware signing device focused on security. Features air-gapped operation (via SD card or NFC), duress PINs, dice roll entropy, and PSBT support. The gold standard for cold storage security.',
category: 'bitcoin-wallet',
platforms: ['cli'],
url: 'https://coldcard.com',
keywords: ['coldcard', 'coldcard.com', 'cold card'],
relatedApps: ['sparrow', 'nunchuk'],
},
// ─── Privacy Tools ──────────────────────────────────────────────
{
id: 'simplex-chat',
name: 'SimpleX Chat',
description: 'Private messenger with no user IDs',
longDescription: 'SimpleX Chat is the only messenger that has no user identifiers — not even random numbers. It uses temporary anonymous pairwise addresses for each contact, making metadata analysis extremely difficult. Supports groups, voice, video, and file sharing.',
category: 'privacy',
platforms: ['ios', 'android', 'desktop', 'cli'],
url: 'https://simplex.chat',
keywords: ['simplex', 'simplex chat', 'simplex.chat'],
relatedApps: ['signal'],
},
{
id: 'signal',
name: 'Signal',
description: 'End-to-end encrypted messaging',
longDescription: 'Signal is the industry standard for encrypted messaging. Uses the Signal Protocol for E2E encryption of messages, calls, and video. Open source, no ads, no tracking. Requires a phone number for registration.',
category: 'privacy',
platforms: ['ios', 'android', 'desktop'],
url: 'https://signal.org',
keywords: ['signal', 'signal.org', 'signal messenger', 'signal app'],
relatedApps: ['simplex-chat'],
},
{
id: 'mullvad',
name: 'Mullvad VPN',
description: 'Privacy-focused VPN accepting Bitcoin',
longDescription: 'Mullvad is a VPN service that prioritizes privacy. No email or personal info needed to sign up — just a generated account number. Accepts Bitcoin and cash payments. Open-source clients, WireGuard support, and a strict no-logging policy.',
category: 'privacy',
platforms: ['ios', 'android', 'desktop', 'cli'],
url: 'https://mullvad.net',
keywords: ['mullvad', 'mullvad vpn', 'mullvad.net'],
},
// ─── Node Software ──────────────────────────────────────────────
{
id: 'start9',
name: 'Start9',
description: 'Sovereign computing platform for self-hosting',
longDescription: 'Start9 (formerly Embassy) is a Linux-based operating system for running a personal server. Self-host Bitcoin Core, Lightning, Nostr relays, and 200+ other services with a simple web UI. True digital sovereignty without command-line knowledge.',
category: 'node',
platforms: ['nodeos', 'desktop'],
url: 'https://start9.com',
keywords: ['start9', 'start9.com', 'embassy', 'startos'],
howTo: [
'Purchase a Start9 server or install StartOS on your own hardware',
'Access the web dashboard from your local network',
'Install services: Bitcoin Core, LND, Nostr relay, etc.',
'Configure Tor for remote access',
],
relatedApps: ['umbrel', 'raspiblitz'],
},
{
id: 'umbrel',
name: 'Umbrel',
description: 'Personal home server OS with app store',
longDescription: 'Umbrel is a beautiful OS for running a personal server at home. One-click install for Bitcoin Core, Lightning, Nostr relays, and hundreds of self-hosted apps. Runs on Raspberry Pi or any x86 hardware.',
category: 'node',
platforms: ['nodeos', 'desktop'],
url: 'https://umbrel.com',
keywords: ['umbrel', 'umbrel.com', 'umbrel os'],
relatedApps: ['start9', 'raspiblitz'],
},
{
id: 'raspiblitz',
name: 'RaspiBlitz',
description: 'DIY Bitcoin/Lightning node for Raspberry Pi',
longDescription: 'RaspiBlitz is a do-it-yourself Bitcoin and Lightning Network node running on a Raspberry Pi. Features a touchscreen LCD, automated setup scripts, and a focus on education. Great for learning how nodes work hands-on.',
category: 'node',
platforms: ['nodeos'],
url: 'https://raspiblitz.org',
keywords: ['raspiblitz', 'raspi blitz', 'raspiblitz.org'],
relatedApps: ['start9', 'umbrel', 'mynode'],
},
{
id: 'mynode',
name: 'myNode',
description: 'Easy Bitcoin and Lightning node',
longDescription: 'myNode provides a simple way to run a Bitcoin and Lightning node. Premium and community editions available. Includes Bitcoin Core, LND, Electrum Server, BTC Pay Server, and other essential services.',
category: 'node',
platforms: ['nodeos'],
url: 'https://mynodebtc.com',
keywords: ['mynode', 'mynodebtc', 'my node'],
relatedApps: ['start9', 'umbrel', 'raspiblitz'],
},
// ─── Dev Tools ──────────────────────────────────────────────────
{
id: 'ndk',
name: 'NDK',
description: 'Nostr Development Kit for building apps',
longDescription: 'NDK (Nostr Development Kit) is a JavaScript/TypeScript library for building Nostr applications. It handles relay connections, event signing, caching, and subscription management. The most popular framework for Nostr web development.',
category: 'dev-tool',
platforms: ['web', 'desktop', 'cli'],
url: 'https://github.com/nostr-dev-kit/ndk',
keywords: ['ndk', 'nostr development kit', 'nostr-dev-kit'],
relatedApps: ['nostr-tools', 'nak'],
},
{
id: 'nostr-tools',
name: 'nostr-tools',
description: 'Low-level Nostr protocol utilities',
longDescription: 'nostr-tools is a low-level JavaScript library for working with the Nostr protocol. Provides event creation, signing, relay communication, NIP implementations, and key management. Foundation library used by many Nostr clients.',
category: 'dev-tool',
platforms: ['web', 'desktop', 'cli'],
url: 'https://github.com/nbd-wtf/nostr-tools',
keywords: ['nostr-tools', 'nostr tools'],
relatedApps: ['ndk', 'nak'],
},
{
id: 'nak',
name: 'Nak',
description: 'Nostr CLI tool for power users',
longDescription: 'Nak is a command-line tool for interacting with Nostr relays. Useful for debugging, testing, and scripting. Can publish events, query relays, decode/encode Nostr identifiers, and manage keys from the terminal.',
category: 'dev-tool',
platforms: ['cli'],
url: 'https://github.com/fiatjaf/nak',
keywords: ['nak', 'nak cli', 'nak nostr'],
relatedApps: ['ndk', 'nostr-tools'],
},
]