Skip to content

οΈπŸ›  - Clipboard URL detection for quick-addΒ #82

@maxwellmattryan

Description

@maxwellmattryan

Description

Enable quick discovery of releases from other apps by detecting supported URLs on the system clipboard when the mobile app opens or comes to the foreground.

This is a lightweight alternative to the iOS Share Extension (#59) that works on both iOS and Android with no native code. When a user copies a Bandcamp/SoundCloud/YouTube/Discogs link from Safari or another app and opens Crate, the app detects the URL and offers to add it.

Scope:

  • On app foreground (or app open), read the system clipboard via the WebView clipboard API or a Tauri plugin
  • Check if clipboard content is a URL matching a supported source (Bandcamp, SoundCloud, YouTube, Discogs) β€” reuse existing source detection logic from DiscoveryService
  • If a supported URL is detected, show a non-intrusive prompt/banner: "Add [truncated-url] to discoveries?"
  • User confirms β†’ triggers the same add-release flow as manual URL entry (reuse create_discovery_release command)
  • User dismisses β†’ don't prompt again for the same URL (track dismissed URLs in memory or local storage)
  • Don't prompt if the URL is already in the user's discoveries

Key files:

  • apps/mobile/src/lib/ β€” new clipboard detection hook or utility
  • shared/api/discovery.ts β€” reuse existing createRelease API wrapper
  • src-tauri/src/services/discovery/mod.rs β€” reuse detect_source_type() for URL validation

Open questions

  • Does iOS 16+ require the new UIPasteboard privacy prompt ("App would like to paste from...")? If so, how does this affect the UX flow?
  • Should clipboard detection run on every foreground event, or only once per app session?
  • Should the prompt be a toast-style banner, a bottom sheet, or an inline card at the top of the discovery feed?

Acceptance criteria

  • Copying a supported URL and opening the app shows a prompt to add it
  • Confirming the prompt adds the release to discoveries (metadata fetched automatically)
  • Dismissing the prompt suppresses it for that URL
  • URLs already in the discovery library are not prompted
  • Works on both iOS and Android
  • Does not prompt for non-supported URLs or non-URL clipboard content

Tasks

TBD

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions