openreceive-rails 0.4.5 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c0caf7ce83354949800f2ccbc89f464ef29836d727119b597e171b229d55eae
4
- data.tar.gz: 7f724089996083fa10d5f73482a832cea99b0a409feade661eb66e3837ecd950
3
+ metadata.gz: 1e77eb3df78733f90ea869d2f97bcc7a38e6d608368aa4a2eefae5e31189ba2b
4
+ data.tar.gz: 8a9f452271e8bb69acf0652b2a8ff40df46700853d8b946245d38746fdcdf0b0
5
5
  SHA512:
6
- metadata.gz: 386c6e60be7d4dfb562b5b16f62792c46a8eee488e217174c85ce2a3daef49605b45221bd56d2d81f4ab72fd313243c97c53b362f7c835fe8fa9c06722bd61c6
7
- data.tar.gz: 2dc97ae52f9d6d470384ccff786e8383619fc349abaf31e1365532f62721b3b6dcabb845b5774a4471c19a7fccc1cf8ecdff0c916cc53c6224c56810c4e17220
6
+ metadata.gz: 42ec6020ced1c31af6bec3e470bb62b3578e8825fbe87eda56aac0f4534014f17d7bb0b6e9c4cbcc2e7d11798a7eba6726c5f7e71b03e8d0113ecd9bf3a278e2
7
+ data.tar.gz: eb036319121a4b993a31da270d84b68fd385749a5c1e4e55faeb5fa4651cff0dda7bfb787fe82638a2b8ce57860f090dff1bda218441ab8893250052e4b7c0f8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.8 - 2026-09-14
4
+
5
+ Release alongside the custom element's Lightning invoice loading indicator.
6
+ Rails hosts must also update their npm checkout dependencies and rebuild
7
+ JavaScript to receive it. No Rails engine API or settlement changes.
8
+
9
+ ## 0.4.7 - 2026-09-13
10
+
11
+ Version alignment for the BTCPay plugin release; no Ruby behavior changes.
12
+
13
+ ## 0.4.6 - 2026-09-11
14
+
15
+ Refresh installation and quickstart documentation and package metadata.
16
+ The Rails demo places the order id and return link below payment choices and
17
+ the Lightning wallet list on mobile, while keeping the desktop sidebar.
18
+ Release in lockstep with openreceive 0.4.6 and its live-price request fix;
19
+ no Rails engine API change.
20
+
3
21
  ## 0.4.5 - 2026-09-07
4
22
 
5
23
  Release in lockstep with the Python/PHP publishing workflow fixes and complete
data/README.md CHANGED
@@ -1,17 +1,55 @@
1
1
  # openreceive-rails
2
2
 
3
- Mountable receive-only OpenReceive engine. The engine owns the
4
- `OpenReceivePayment` attempt model (statuses `pending`, `settled`, `expired`,
5
- `failed`, `attention`), its per-reference commit locking, settlement write-once, and
6
- the reconciliation state machine. The install generator mounts the routes and
7
- emits the initializer plus one migration creating both engine tables
8
- (`openreceive_payments` and the `openreceive_meta` reconcile gate):
3
+ **Accept Bitcoin Lightning payments in Rails. Your app, your wallet.**
4
+
5
+ [OpenReceive](https://openreceive.org) adds Lightning checkout to your Rails app
6
+ and sends payments directly to a wallet you control. Mount the engine, connect
7
+ a receive-only Nostr Wallet Connect (NWC) wallet, and connect three hooks:
8
+ authorize a request, look up the order amount, and handle a settled payment.
9
+
10
+ OpenReceive supports optional swaps from **USDT, USDC, SOL, and ETH** through
11
+ a configured swap provider. The provider converts the payment to **BTC over
12
+ Lightning**, which settles into the merchant's connected wallet. Available
13
+ assets and networks depend on the provider; swaps are optional.
14
+
15
+ - **Fits your app:** keep your orders, users, prices, and fulfillment in Rails.
16
+ - **Uses your database:** payment attempts and reconciliation live alongside
17
+ your application data, with PostgreSQL, SQLite, and MySQL support.
18
+ - **Handles the payment lifecycle:** invoice creation, payment checks, retry
19
+ coordination, and settlement reconciliation are built in.
20
+ - **Keeps operations simple:** no separate OpenReceive database, Redis, or
21
+ payment service to deploy. Wallet notifications can run in an optional worker.
22
+
23
+ ## Get started
24
+
25
+ Requires Ruby 3.2 or later and Rails 8.0 or later. Add to your Gemfile:
26
+
27
+ ```ruby
28
+ gem "openreceive-rails"
29
+ ```
30
+
31
+ Run `bundle install`, then install the engine:
9
32
 
10
33
  ```sh
11
34
  bin/rails generate openreceive:install
12
35
  bin/rails db:migrate
13
36
  ```
14
37
 
38
+ The core, server, and default NWC client gems are included as dependencies.
39
+ Follow the [Rails quickstart](https://github.com/OpenReceive/openreceive/blob/master/docs/guides/quickstart-rails.md) for native
40
+ build prerequisites, wallet configuration, the three hooks, and the checkout UI.
41
+ The generator creates the initializer, migration, and route mount; configure
42
+ the wallet and hooks before accepting payments.
43
+
44
+ ## How it fits into Rails
45
+
46
+ The engine owns the
47
+ `OpenReceivePayment` attempt model (statuses `pending`, `settled`, `expired`,
48
+ `failed`, `attention`), its per-reference commit locking, settlement write-once, and
49
+ the reconciliation state machine. The install generator mounts the routes and
50
+ emits the initializer plus one migration creating both engine tables
51
+ (`openreceive_payments` and the `openreceive_meta` reconcile gate).
52
+
15
53
  The generated migration supports PostgreSQL, SQLite, and MySQL, and seeds the
16
54
  shared `schema_version`; on its first database touch the engine refuses to
17
55
  operate a database whose stored schema version is newer than the gem.
@@ -50,3 +88,13 @@ application refuses to start when the connection advertises spend methods unless
50
88
  `config.allow_spend_capable_wallet` or `OPENRECEIVE_ALLOW_SPEND_CAPABLE_NWC`
51
89
  overrides it. Keep ordinary settings such as `config.price_currencies` in
52
90
  `config/initializers/openreceive.rb`.
91
+
92
+ ## Links
93
+
94
+ - Rails quickstart: [Connect your first checkout](https://github.com/OpenReceive/openreceive/blob/master/docs/guides/quickstart-rails.md)
95
+ - API reference: [Configuration, hooks, and reconciliation](https://github.com/OpenReceive/openreceive/blob/master/docs/guides/api-reference.md)
96
+ - Host testing: [Test your integration without a wallet](https://github.com/OpenReceive/openreceive/blob/master/docs/guides/host-testing.md)
97
+ - Source and issues: <https://github.com/openreceive/openreceive>
98
+ - Changelog: [CHANGELOG.md](CHANGELOG.md)
99
+
100
+ MIT license.
@@ -5,6 +5,6 @@ module OpenReceive
5
5
  # top-level `::Rails` framework constant — engine code always references the framework as
6
6
  # `::Rails` to avoid shadowing.
7
7
  module Rails
8
- VERSION = "0.4.5"
8
+ VERSION = "0.4.8"
9
9
  end
10
10
  end
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (BTCPay Server)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Connect a BTCPay Server store to a receive-only NWC wallet with the OpenReceive
6
6
  plugin, and optionally let payers pay BTCPay invoices with USDT, USDC, ETH or
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Django)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Django project — the app you are already working in. You
6
6
  do not need a copy of the OpenReceive source: the Python package is on PyPI
@@ -245,11 +245,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
245
245
  "switch payment method".
246
246
  - No "Open wallet" button on desktop.
247
247
  - Wallet suggestions: `getPaymentWizardRoutes()` +
248
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
249
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
250
- resolves (`image` is `undefined` until then) so serve nothing and set no
251
- asset option. When it works, the logos and payment icons render; a missing
252
- image means a CSP `img-src` that blocks `data:`, and the console names it.
248
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
249
+ images load from a JavaScript chunk. For a custom headless UI, load it when
250
+ a tutorial opens and look up the returned table by the tutorial's `path`:
251
+
252
+ ```js
253
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
254
+
255
+ const images = await loadPayTutorialImages();
256
+ const src = images[tutorial.path]; // data URI for the selected tutorial
257
+ ```
258
+
259
+ Render `src` as the image source and update your UI after loading. Existing
260
+ display objects do not update: their `tutorial.image` stays `undefined` if
261
+ created before loading. Alternatively, await the loader, recreate the displays
262
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
263
+ Show the caption while loading or if loading fails; never use an empty image
264
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
265
+ For missing images, check CSP errors, failed chunks, and stale displays.
266
+ Registry paths are lookup keys; there is no asset option or image route.
253
267
  The registry answers ~37 wallets: pass
254
268
  `providerPreviewLimit` and build "show all" from `display.providerCount`,
255
269
  or they push the QR off the screen.
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (FastAPI)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a FastAPI application — the app you are already working in.
6
6
  You do not need a copy of the OpenReceive source: the engine is on PyPI
@@ -242,11 +242,25 @@ components.
242
242
  "switch payment method".
243
243
  - No "Open wallet" button on desktop.
244
244
  - Wallet suggestions: `getPaymentWizardRoutes()` +
245
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
246
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
247
- resolves (`image` is `undefined` until then) so serve nothing and set no
248
- asset option. When it works, the logos and payment icons render; a missing
249
- image means a CSP `img-src` that blocks `data:`, and the console names it.
245
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
246
+ images load from a JavaScript chunk. For a custom headless UI, load it when
247
+ a tutorial opens and look up the returned table by the tutorial's `path`:
248
+
249
+ ```js
250
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
251
+
252
+ const images = await loadPayTutorialImages();
253
+ const src = images[tutorial.path]; // data URI for the selected tutorial
254
+ ```
255
+
256
+ Render `src` as the image source and update your UI after loading. Existing
257
+ display objects do not update: their `tutorial.image` stays `undefined` if
258
+ created before loading. Alternatively, await the loader, recreate the displays
259
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
260
+ Show the caption while loading or if loading fails; never use an empty image
261
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
262
+ For missing images, check CSP errors, failed chunks, and stale displays.
263
+ Registry paths are lookup keys; there is no asset option or image route.
250
264
 
251
265
  ## More documentation
252
266
 
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Fastify)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Fastify application — the app you are already working in.
6
6
  You do not need a copy of the OpenReceive source: the packages are on npm, and
@@ -225,11 +225,25 @@ components.
225
225
  "switch payment method".
226
226
  - No "Open wallet" button on desktop.
227
227
  - Wallet suggestions: `getPaymentWizardRoutes()` +
228
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
229
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
230
- resolves (`image` is `undefined` until then) so serve nothing and set no
231
- asset option. When it works, the logos and payment icons render; a missing
232
- image means a CSP `img-src` that blocks `data:`, and the console names it.
228
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
229
+ images load from a JavaScript chunk. For a custom headless UI, load it when
230
+ a tutorial opens and look up the returned table by the tutorial's `path`:
231
+
232
+ ```js
233
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
234
+
235
+ const images = await loadPayTutorialImages();
236
+ const src = images[tutorial.path]; // data URI for the selected tutorial
237
+ ```
238
+
239
+ Render `src` as the image source and update your UI after loading. Existing
240
+ display objects do not update: their `tutorial.image` stays `undefined` if
241
+ created before loading. Alternatively, await the loader, recreate the displays
242
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
243
+ Show the caption while loading or if loading fails; never use an empty image
244
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
245
+ For missing images, check CSP errors, failed chunks, and stale displays.
246
+ Registry paths are lookup keys; there is no asset option or image route.
233
247
 
234
248
  ## More documentation
235
249
 
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Laravel)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Laravel application — the app you are already working in.
6
6
  You do not need a copy of the OpenReceive source: the package is on Packagist
@@ -230,11 +230,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
230
230
  "switch payment method".
231
231
  - No "Open wallet" button on desktop.
232
232
  - Wallet suggestions: `getPaymentWizardRoutes()` +
233
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
234
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
235
- resolves (`image` is `undefined` until then) so serve nothing and set no
236
- asset option. When it works, the logos and payment icons render; a missing
237
- image means a CSP `img-src` that blocks `data:`, and the console names it.
233
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
234
+ images load from a JavaScript chunk. For a custom headless UI, load it when
235
+ a tutorial opens and look up the returned table by the tutorial's `path`:
236
+
237
+ ```js
238
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
239
+
240
+ const images = await loadPayTutorialImages();
241
+ const src = images[tutorial.path]; // data URI for the selected tutorial
242
+ ```
243
+
244
+ Render `src` as the image source and update your UI after loading. Existing
245
+ display objects do not update: their `tutorial.image` stays `undefined` if
246
+ created before loading. Alternatively, await the loader, recreate the displays
247
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
248
+ Show the caption while loading or if loading fails; never use an empty image
249
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
250
+ For missing images, check CSP errors, failed chunks, and stale displays.
251
+ Registry paths are lookup keys; there is no asset option or image route.
238
252
  The registry answers ~37 wallets: pass
239
253
  `providerPreviewLimit` and build "show all" from `display.providerCount`,
240
254
  or they push the QR off the screen.
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Next.js)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Next.js App Router application — the app you are already
6
6
  working in. You do not need a copy of the OpenReceive source: the packages are
@@ -231,11 +231,25 @@ components.
231
231
  "switch payment method".
232
232
  - No "Open wallet" button on desktop.
233
233
  - Wallet suggestions: `getPaymentWizardRoutes()` +
234
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
235
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
236
- resolves (`image` is `undefined` until then) so serve nothing and set no
237
- asset option. When it works, the logos and payment icons render; a missing
238
- image means a CSP `img-src` that blocks `data:`, and the console names it.
234
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
235
+ images load from a JavaScript chunk. For a custom headless UI, load it when
236
+ a tutorial opens and look up the returned table by the tutorial's `path`:
237
+
238
+ ```js
239
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
240
+
241
+ const images = await loadPayTutorialImages();
242
+ const src = images[tutorial.path]; // data URI for the selected tutorial
243
+ ```
244
+
245
+ Render `src` as the image source and update your UI after loading. Existing
246
+ display objects do not update: their `tutorial.image` stays `undefined` if
247
+ created before loading. Alternatively, await the loader, recreate the displays
248
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
249
+ Show the caption while loading or if loading fails; never use an empty image
250
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
251
+ For missing images, check CSP errors, failed chunks, and stale displays.
252
+ Registry paths are lookup keys; there is no asset option or image route.
239
253
 
240
254
  ## More documentation
241
255
 
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Node.js)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Node application — the app you are already working in. You
6
6
  do not need a copy of the OpenReceive source: the packages are on npm, and the
@@ -217,11 +217,25 @@ components.
217
217
  "switch payment method".
218
218
  - No "Open wallet" button on desktop.
219
219
  - Wallet suggestions: `getPaymentWizardRoutes()` +
220
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
221
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
222
- resolves (`image` is `undefined` until then) so serve nothing and set no
223
- asset option. When it works, the logos and payment icons render; a missing
224
- image means a CSP `img-src` that blocks `data:`, and the console names it.
220
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
221
+ images load from a JavaScript chunk. For a custom headless UI, load it when
222
+ a tutorial opens and look up the returned table by the tutorial's `path`:
223
+
224
+ ```js
225
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
226
+
227
+ const images = await loadPayTutorialImages();
228
+ const src = images[tutorial.path]; // data URI for the selected tutorial
229
+ ```
230
+
231
+ Render `src` as the image source and update your UI after loading. Existing
232
+ display objects do not update: their `tutorial.image` stays `undefined` if
233
+ created before loading. Alternatively, await the loader, recreate the displays
234
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
235
+ Show the caption while loading or if loading fails; never use an empty image
236
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
237
+ For missing images, check CSP errors, failed chunks, and stale displays.
238
+ Registry paths are lookup keys; there is no asset option or image route.
225
239
 
226
240
  ## More documentation
227
241
 
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (PHP)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a PHP application — the app you are already working in. You
6
6
  do not need a copy of the OpenReceive source: the engine is on Packagist
@@ -243,11 +243,25 @@ of https://openreceive.org/guides/checkout-ux.md, for a UI built on
243
243
  "switch payment method".
244
244
  - No "Open wallet" button on desktop.
245
245
  - Wallet suggestions: `getPaymentWizardRoutes()` +
246
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
247
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
248
- resolves (`image` is `undefined` until then) so serve nothing and set no
249
- asset option. When it works, the logos and payment icons render; a missing
250
- image means a CSP `img-src` that blocks `data:`, and the console names it.
246
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
247
+ images load from a JavaScript chunk. For a custom headless UI, load it when
248
+ a tutorial opens and look up the returned table by the tutorial's `path`:
249
+
250
+ ```js
251
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
252
+
253
+ const images = await loadPayTutorialImages();
254
+ const src = images[tutorial.path]; // data URI for the selected tutorial
255
+ ```
256
+
257
+ Render `src` as the image source and update your UI after loading. Existing
258
+ display objects do not update: their `tutorial.image` stays `undefined` if
259
+ created before loading. Alternatively, await the loader, recreate the displays
260
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
261
+ Show the caption while loading or if loading fails; never use an empty image
262
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
263
+ For missing images, check CSP errors, failed chunks, and stale displays.
264
+ Registry paths are lookup keys; there is no asset option or image route.
251
265
 
252
266
  ## More documentation
253
267
 
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Rails)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Add OpenReceive to a Rails application — the app you are already working in. You
6
6
  do not need a copy of the OpenReceive source: the gem is on RubyGems, the
@@ -224,11 +224,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
224
224
  "switch payment method".
225
225
  - No "Open wallet" button on desktop.
226
226
  - Wallet suggestions: `getPaymentWizardRoutes()` +
227
- `createWizardRouteDisplays`. Lightning only. Every image ships inside
228
- the JavaScript logos as data URIs, tutorials once `loadPayTutorialImages()`
229
- resolves (`image` is `undefined` until then) so serve nothing and set no
230
- asset option. When it works, the logos and payment icons render; a missing
231
- image means a CSP `img-src` that blocks `data:`, and the console names it.
227
+ `createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
228
+ images load from a JavaScript chunk. For a custom headless UI, load it when
229
+ a tutorial opens and look up the returned table by the tutorial's `path`:
230
+
231
+ ```js
232
+ import { loadPayTutorialImages } from "@openreceive/browser/headless";
233
+
234
+ const images = await loadPayTutorialImages();
235
+ const src = images[tutorial.path]; // data URI for the selected tutorial
236
+ ```
237
+
238
+ Render `src` as the image source and update your UI after loading. Existing
239
+ display objects do not update: their `tutorial.image` stays `undefined` if
240
+ created before loading. Alternatively, await the loader, recreate the displays
241
+ with `createWizardRouteDisplays`, and render the new `tutorial.image`.
242
+ Show the caption while loading or if loading fails; never use an empty image
243
+ source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
244
+ For missing images, check CSP errors, failed chunks, and stale displays.
245
+ Registry paths are lookup keys; there is no asset option or image route.
232
246
  The registry answers ~37 wallets: pass
233
247
  `providerPreviewLimit` and build "show all" from `display.providerCount`,
234
248
  or they push the QR off the screen.
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (WordPress + WooCommerce)
2
2
 
3
- These directions describe OpenReceive 0.4.5.
3
+ These directions describe OpenReceive 0.4.8.
4
4
 
5
5
  Install and configure the OpenReceive gateway in the existing WooCommerce
6
6
  store. Preserve its theme, checkout, customer accounts, order model and prices.
@@ -90,6 +90,29 @@ Requirements: WordPress 6.6+, WooCommerce 9+, 64-bit PHP 8.2+ with GMP and sodiu
90
90
  and MySQL 8 or MariaDB 10.5+. Activation creates payment-attempt tables in the
91
91
  existing WordPress database. No separate database or application is required.
92
92
 
93
+ ### Get the installable archive
94
+
95
+ Use `openreceive-wordpress-<version>.zip` from the selected
96
+ [OpenReceive GitHub release](https://github.com/OpenReceive/openreceive/releases)
97
+ when that asset is listed. A GitHub source-code zip is not the plugin archive.
98
+ If the release does not yet provide a built zip, build it on a development
99
+ machine with Node 22+, PHP 8.2+, Composer and WP-CLI:
100
+
101
+ ```sh
102
+ git clone https://github.com/OpenReceive/openreceive.git
103
+ cd openreceive
104
+ git checkout <release-tag>
105
+ npm ci
106
+ npm run build:packages
107
+ composer install --working-dir=packages/php/wordpress
108
+ npm run release:wordpress:build
109
+ ```
110
+
111
+ Upload the resulting `dist/openreceive-wordpress-<version>.zip`. WP-CLI must be
112
+ on `PATH`, or set `OPENRECEIVE_WP_CLI` to the absolute path of its phar. The
113
+ WordPress server needs neither Node nor Composer: dependencies and checkout
114
+ assets are bundled inside the built plugin.
115
+
93
116
  ### Configure the wallet
94
117
 
95
118
  Open **WooCommerce → Settings → Payments → OpenReceive**. Enter a receive-only
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openreceive-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenReceive
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.4.5
18
+ version: 0.4.8
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.5
25
+ version: 0.4.8
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: openreceive-server
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.4.5
32
+ version: 0.4.8
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 0.4.5
39
+ version: 0.4.8
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rails
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -85,16 +85,21 @@ dependencies:
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
87
  version: '2.1'
88
- description: 'A mountable Rails engine that ships OpenReceive''s receive-only checkout
89
- routes into a Rails app. Engine controllers inherit from the host''s ApplicationController
90
- (keeping its authentication, current_user, and forgery protection; the shared handler
91
- adds JSON-only and same-site gates), delegate to the openreceive-server Service,
92
- and obey host-supplied authorization, amount-resolution, and settlement hooks. The
93
- engine owns the OpenReceivePayment attempt model, its status state machine, settlement
94
- write-once, and reconciliation (OpenReceive.reconcile!, OpenReceive::ReconcileJob,
95
- rake openreceive:reconcile); its install generator emits only the migration, initializer,
96
- and route mount. Receive-only: it never exposes a spend path, and boot fails closed
97
- on spend-capable NWC codes.'
88
+ description: |
89
+ Add Bitcoin Lightning checkout to your Rails app and receive payments directly
90
+ into a wallet you control. Mount the engine, connect a receive-only Nostr Wallet
91
+ Connect (NWC) wallet, and wire up three hooks for authorization, order amounts,
92
+ and fulfillment.
93
+
94
+ Optional swaps let customers pay with USDT, USDC, SOL, and ETH through a
95
+ configured provider; you receive BTC over Lightning in your wallet. Available
96
+ assets and networks depend on the provider.
97
+
98
+ OpenReceive handles invoices, payment attempts, and settlement reconciliation
99
+ using your existing application database. Keep your orders,
100
+ users, prices, and fulfillment in your app, with no separate OpenReceive database,
101
+ Redis, or payment service to deploy. Includes an install generator, PostgreSQL,
102
+ SQLite, and MySQL support, plus an optional wallet-notifications worker.
98
103
  email:
99
104
  - info@openreceive.org
100
105
  executables: []
@@ -145,7 +150,7 @@ metadata:
145
150
  source_code_uri: https://github.com/openreceive/openreceive
146
151
  changelog_uri: https://github.com/openreceive/openreceive/blob/master/packages/ruby/openreceive-rails/CHANGELOG.md
147
152
  bug_tracker_uri: https://github.com/openreceive/openreceive/issues
148
- documentation_uri: https://rubydoc.info/gems/openreceive-rails
153
+ documentation_uri: https://github.com/openreceive/openreceive/blob/master/docs/guides/quickstart-rails.md
149
154
  rubygems_mfa_required: 'true'
150
155
  rdoc_options: []
151
156
  require_paths:
@@ -163,6 +168,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
168
  requirements: []
164
169
  rubygems_version: 3.6.9
165
170
  specification_version: 4
166
- summary: OpenReceive mountable Rails engine with engine-owned payment attempts in
167
- the host database.
171
+ summary: Accept Bitcoin Lightning payments in Rails. Your app, your wallet.
168
172
  test_files: []