OpenReceive 0.4.23 adds Supabase storage over Supabase's HTTPS API, for servers that cannot open a Postgres connection to Supabase, such as Cloudflare Workers and so every Lovable app, and a Lovable guide with directions for Lovable's agent. The WordPress plugin is now in the WordPress.org plugin directory: install it from Plugins → Add New or with wp plugin install openreceive --activate. Its settings name the gateway OpenReceive, not a prefixed PHP namespace, and label the codes NWC code and Lightning Swap Connect code. The BTCPay Server directions ask for one code per message, and the Laravel directions add GMP to the Docker image. Upgrade if you use the WordPress plugin or want Supabase from a Worker.
Optional swaps let payers use USDT, USDC, SOL and ETH; a configured swap provider converts them to BTC over Lightning in the merchant's connected wallet. Asset and network availability depends on the provider.
- Added (JS): Supabase storage over Supabase's HTTPS API, for servers that
cannot open a Postgres connection to Supabase. A Cloudflare Worker (and so
every Lovable app) cannot: Supabase's database certificate comes from a
private authority, and a Worker's sockets accept none. Pass
storage: { supabase: { url, key } }tocreateStack, orsupabasetocreateHost, with the project's secret key orservice_rolekey.npx openreceive scaffold payments --supabasewrites the Supabase migration: the same two tables, locked away from the Data API, and SQL functions that take the reference lock, check that the rows the library decided on are unchanged, and write. Fulfillment is the host's SQL functionopenreceive_on_paid, which runs inside the settlement transaction for the first settled attempt, so a failure there records nothing. Before serving, the repository checks the database and answers 503 if the functions are missing or another version,openreceive_on_paidis missing or still the placeholder, row level security is off, oranonorauthenticatedcan reach any OpenReceive table or function. A new CI lane runs it against Supabase's Postgres image and PostgREST, including concurrent creates and settlements. Guide: /guides/supabase#supabase-over-https. - Changed (JS): the SQL repository's reconcile gate and row parsing moved into modules shared with the Supabase repository. Behaviour is unchanged.
- Added (docs): a Lovable guide (/guides/lovable) with the prompt to paste into Lovable, and agent directions for Lovable's agent (/agent-directions/lovable/full.md). Lovable's agent has no terminal, so these directions ask for each code with Lovable's secure secret input, never for a command, and send it to /guides/supabase-migration, a new page that publishes the scaffold's Supabase migration as SQL to copy. The TanStack Start recipe gains its Supabase route, and the skill lists the Lovable directions. openreceive.org/platforms/lovable becomes a guide page with that prompt; it has a local agent trial and no Tested badge yet.
- Changed (JS): Supabase storage accepts a plain
http://URL for a private host only: localhost, a private IP, or a one-word name such as self-hosted Supabase'shttp://kong:8000. A public host still needshttps://, so the server key never crosses the internet in clear text. - Added (release): the WordPress plugin is published to the
WordPress.org plugin directory.
Publishing a GitHub release starts the new
Publish WordPress.orgworkflow. Once a maintainer approves it, it commits the release's WordPress ZIP to the plugin's Subversion trunk and version tag, together with the directory page images, and waits until wordpress.org lists the version. Every GitHub release still carries the ZIP. - Fixed (WordPress): WooCommerce → Settings → Payments named the gateway
OpenReceive\WP\Vendor\OpenReceive. The release build's dependency prefixing rewrote the quoted name because it equals the engine's namespace; the build now restores it, and the WordPress integration test checks the name in the built plugin. - Changed (WordPress): the settings form labels the codes NWC code,
Lightning Swap Connect code and Backup Lightning Swap Connect code
instead of
NWC_URI,LSC_URI_PRIMARYandLSC_URI_BACKUP, says what each one is for, and links to where to get one. Thewp-config.phpconstants and Doctor keep the variable names. The Title field is empty by default and shows the title checkout uses as its placeholder, so it no longer reads "Bitcoin Lightning" while checkout says "Bitcoin & stablecoins"; a store that saved the old default sees the field empty. Until an NWC code is saved, the Enable checkbox says to enter one first. - Changed (WooCommerce quickstart, agent directions and plugin README): install
the plugin from WordPress.org: search for OpenReceive under Plugins → Add
New, or run
wp plugin install openreceive --activate. The directions pin the release with--versionand fall back to the release ZIP when WordPress.org does not list that version yet. - Changed (Laravel quickstart, PHP agent directions): adding GMP to an
official
phpDocker image takeslibgmp-devbeforedocker-php-ext-install gmp, which fails alone; the quickstart gives the Dockerfile step and where to runcomposer require, and forbids--ignore-platform-req=ext-gmp. Two of three Laravel agent trials had forced past the missing extension that way. - Changed (BTCPay agent directions): the first action after the deployment checks is one question, the NWC code, with the wallet walkthrough; the LSC code comes in a later message; and the agent never searches the machine for a code. A new Step 1 saves each code through Greenfield from a request body the agent writes to a file, so no code appears in a command line. An agent that cannot use BTCPay's UI asks the user to install the plugin, and checks the store through Greenfield instead of the health check page.