openreceive-rails 0.4.6 → 0.4.9
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 +4 -4
- data/CHANGELOG.md +22 -0
- data/lib/openreceive/rails/version.rb +1 -1
- data/skills/integrate-openreceive/references/btcpay.md +1 -1
- data/skills/integrate-openreceive/references/django.md +28 -8
- data/skills/integrate-openreceive/references/fastapi.md +28 -8
- data/skills/integrate-openreceive/references/fastify.md +28 -8
- data/skills/integrate-openreceive/references/laravel.md +28 -8
- data/skills/integrate-openreceive/references/next.md +29 -10
- data/skills/integrate-openreceive/references/node.md +28 -8
- data/skills/integrate-openreceive/references/php.md +28 -8
- data/skills/integrate-openreceive/references/rails.md +29 -9
- data/skills/integrate-openreceive/references/woocommerce.md +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c53bf506f1db08240a35a17c509b74d5bdb13964f10bdc0b3e8d580d71e0f6c1
|
|
4
|
+
data.tar.gz: b3361f7e657d7d0e96228b1a8a8f5531ed61ed6924f002b6bebdb70a80f91efe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 07c085990621609cde309b305d3887079232ddfa00c191b409a8aa2bba38370d2937422607cb3479dfff78edbe0bde4976e6ec9e50aa3bd0ff1525f429905b3f
|
|
7
|
+
data.tar.gz: 0ed794db39837fb586b2e49d705fc8064f2aadf647544e51bd13888f748fbf3ad897700950211ca2f5087739d2036bcf748d3af9a28668d13bb1a2c6660b4864
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.9 - 2026-09-14
|
|
4
|
+
|
|
5
|
+
Release alongside the packaged checkout fix that hides the Lightning pane
|
|
6
|
+
on “Switch payment method” and reuses the same invoice when Bitcoin is
|
|
7
|
+
selected again. Update `@openreceive/elements` and rebuild the frontend to
|
|
8
|
+
receive this fix; upgrading the gem alone does not update the checkout UI.
|
|
9
|
+
|
|
10
|
+
Refresh the bundled Rails integration directions with the method-switch
|
|
11
|
+
regression check and guidance to serve the compiled stylesheet without
|
|
12
|
+
importing it into the host Tailwind entry. No Rails engine API or settlement
|
|
13
|
+
changes.
|
|
14
|
+
|
|
15
|
+
## 0.4.8 - 2026-09-14
|
|
16
|
+
|
|
17
|
+
Release alongside the custom element's Lightning invoice loading indicator.
|
|
18
|
+
Rails hosts must also update their npm checkout dependencies and rebuild
|
|
19
|
+
JavaScript to receive it. No Rails engine API or settlement changes.
|
|
20
|
+
|
|
21
|
+
## 0.4.7 - 2026-09-13
|
|
22
|
+
|
|
23
|
+
Version alignment for the BTCPay plugin release; no Ruby behavior changes.
|
|
24
|
+
|
|
3
25
|
## 0.4.6 - 2026-09-11
|
|
4
26
|
|
|
5
27
|
Refresh installation and quickstart documentation and package metadata.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (BTCPay Server)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -218,6 +218,8 @@ The engine serves JSON only, so the view is yours — but the drop-ins
|
|
|
218
218
|
list is the short form of https://openreceive.org/guides/checkout-ux.md, for a UI
|
|
219
219
|
built on `@openreceive/browser/headless`. Read that before writing components.
|
|
220
220
|
|
|
221
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
222
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
221
223
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
222
224
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
223
225
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -245,11 +247,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
|
|
|
245
247
|
"switch payment method".
|
|
246
248
|
- No "Open wallet" button on desktop.
|
|
247
249
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
248
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
250
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
251
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
252
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
253
|
+
|
|
254
|
+
```js
|
|
255
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
256
|
+
|
|
257
|
+
const images = await loadPayTutorialImages();
|
|
258
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
262
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
263
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
264
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
265
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
266
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
267
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
268
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
253
269
|
The registry answers ~37 wallets: pass
|
|
254
270
|
`providerPreviewLimit` and build "show all" from `display.providerCount`,
|
|
255
271
|
or they push the QR off the screen.
|
|
@@ -570,6 +586,11 @@ manage.py openreceive_doctor # the same, for humans; neve
|
|
|
570
586
|
|
|
571
587
|
### Render the checkout
|
|
572
588
|
|
|
589
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
590
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
591
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
592
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
593
|
+
|
|
573
594
|
The app serves JSON checkout routes only — rendering is your template. Any
|
|
574
595
|
OpenReceive frontend package works against the `/openreceive` mount; the
|
|
575
596
|
smallest is the custom element, and the Python package carries its
|
|
@@ -590,8 +611,7 @@ bundler at all:
|
|
|
590
611
|
|
|
591
612
|
`openreceive-checkout.js` registers the `<openreceive-checkout>` tag when it
|
|
592
613
|
loads (one self-contained ES module, un-minified identifiers), and the
|
|
593
|
-
stylesheet is scoped to what OpenReceive renders
|
|
594
|
-
CSS framework in any order. `collectstatic` ships both with the rest of your
|
|
614
|
+
stylesheet is scoped to what OpenReceive renders. `collectstatic` ships both with the rest of your
|
|
595
615
|
static files; the package's `MANIFEST.json` names every file and its hash. The
|
|
596
616
|
element creates the checkout for `reference`, then renders and polls itself
|
|
597
617
|
(its default `prefix` is already `/openreceive`).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (FastAPI)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -215,6 +215,8 @@ This list is the short form of https://openreceive.org/guides/checkout-ux.md, fo
|
|
|
215
215
|
UI built on `@openreceive/browser/headless`. Read that before writing
|
|
216
216
|
components.
|
|
217
217
|
|
|
218
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
219
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
218
220
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
219
221
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
220
222
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -242,11 +244,25 @@ components.
|
|
|
242
244
|
"switch payment method".
|
|
243
245
|
- No "Open wallet" button on desktop.
|
|
244
246
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
245
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
247
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
248
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
249
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
250
|
+
|
|
251
|
+
```js
|
|
252
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
253
|
+
|
|
254
|
+
const images = await loadPayTutorialImages();
|
|
255
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
259
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
260
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
261
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
262
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
263
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
264
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
265
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
250
266
|
|
|
251
267
|
## More documentation
|
|
252
268
|
|
|
@@ -472,8 +488,12 @@ import "@openreceive/react/styles.css";
|
|
|
472
488
|
The checkout renders, polls, and settles itself. The compiled `styles.css`
|
|
473
489
|
sheets (`@openreceive/react`, `@openreceive/elements`) are self-contained — a
|
|
474
490
|
plain `<link rel="stylesheet">` works with no build step — and scoped: every
|
|
475
|
-
rule applies only inside what OpenReceive renders
|
|
476
|
-
|
|
491
|
+
rule applies only inside what OpenReceive renders.
|
|
492
|
+
|
|
493
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
494
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
495
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
496
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
477
497
|
|
|
478
498
|
`<Checkout>` is complete as rendered: it already shows the `description` from
|
|
479
499
|
`amountFor` and the collapsed transaction-details panel. Do not build a custom
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (Fastify)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -198,6 +198,8 @@ This list is the short form of https://openreceive.org/guides/checkout-ux.md, fo
|
|
|
198
198
|
UI built on `@openreceive/browser/headless`. Read that before writing
|
|
199
199
|
components.
|
|
200
200
|
|
|
201
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
202
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
201
203
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
202
204
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
203
205
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -225,11 +227,25 @@ components.
|
|
|
225
227
|
"switch payment method".
|
|
226
228
|
- No "Open wallet" button on desktop.
|
|
227
229
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
228
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
231
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
232
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
233
|
+
|
|
234
|
+
```js
|
|
235
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
236
|
+
|
|
237
|
+
const images = await loadPayTutorialImages();
|
|
238
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
242
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
243
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
244
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
245
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
246
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
247
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
248
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
233
249
|
|
|
234
250
|
## More documentation
|
|
235
251
|
|
|
@@ -474,8 +490,12 @@ import "@openreceive/react/styles.css";
|
|
|
474
490
|
The checkout renders, polls, and settles itself. The compiled `styles.css`
|
|
475
491
|
sheets (`@openreceive/react`, `@openreceive/elements`) are self-contained — a
|
|
476
492
|
plain `<link rel="stylesheet">` works with no build step — and scoped: every
|
|
477
|
-
rule applies only inside what OpenReceive renders
|
|
478
|
-
|
|
493
|
+
rule applies only inside what OpenReceive renders.
|
|
494
|
+
|
|
495
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
496
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
497
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
498
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
479
499
|
|
|
480
500
|
`<Checkout>` is complete as rendered: it already shows the `description` from
|
|
481
501
|
`amountFor` and the collapsed transaction-details panel. Do not build a custom
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (Laravel)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -203,6 +203,8 @@ The engine serves JSON only, so the view is yours — but the drop-ins
|
|
|
203
203
|
list is the short form of https://openreceive.org/guides/checkout-ux.md, for a UI
|
|
204
204
|
built on `@openreceive/browser/headless`. Read that before writing components.
|
|
205
205
|
|
|
206
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
207
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
206
208
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
207
209
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
208
210
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -230,11 +232,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
|
|
|
230
232
|
"switch payment method".
|
|
231
233
|
- No "Open wallet" button on desktop.
|
|
232
234
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
233
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
236
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
237
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
238
|
+
|
|
239
|
+
```js
|
|
240
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
241
|
+
|
|
242
|
+
const images = await loadPayTutorialImages();
|
|
243
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
247
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
248
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
249
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
250
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
251
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
252
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
253
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
238
254
|
The registry answers ~37 wallets: pass
|
|
239
255
|
`providerPreviewLimit` and build "show all" from `display.providerCount`,
|
|
240
256
|
or they push the QR off the screen.
|
|
@@ -546,12 +562,16 @@ costs one relay round trip, not two.
|
|
|
546
562
|
|
|
547
563
|
### Render the checkout
|
|
548
564
|
|
|
565
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
566
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
567
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
568
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
569
|
+
|
|
549
570
|
The engine serves JSON checkout routes only — rendering is your view. Any
|
|
550
571
|
OpenReceive frontend package works against the `/openreceive` mount; the
|
|
551
572
|
smallest is the custom element (its default `prefix` is already
|
|
552
573
|
`/openreceive`, and the package ships a self-contained `styles.css`; it is
|
|
553
|
-
scoped to what OpenReceive renders, so
|
|
554
|
-
framework in any order). Laravel ships Vite, so the package installs like any
|
|
574
|
+
scoped to what OpenReceive renders). Laravel ships Vite, so the package installs like any
|
|
555
575
|
other frontend dependency:
|
|
556
576
|
|
|
557
577
|
```sh
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (Next.js)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -204,6 +204,8 @@ This list is the short form of https://openreceive.org/guides/checkout-ux.md, fo
|
|
|
204
204
|
UI built on `@openreceive/browser/headless`. Read that before writing
|
|
205
205
|
components.
|
|
206
206
|
|
|
207
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
208
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
207
209
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
208
210
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
209
211
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -231,11 +233,25 @@ components.
|
|
|
231
233
|
"switch payment method".
|
|
232
234
|
- No "Open wallet" button on desktop.
|
|
233
235
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
234
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
237
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
238
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
239
|
+
|
|
240
|
+
```js
|
|
241
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
242
|
+
|
|
243
|
+
const images = await loadPayTutorialImages();
|
|
244
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
248
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
249
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
250
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
251
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
252
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
253
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
254
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
239
255
|
|
|
240
256
|
## More documentation
|
|
241
257
|
|
|
@@ -523,10 +539,13 @@ reference the current session may not see; the page can read the session and
|
|
|
523
539
|
|
|
524
540
|
The checkout renders, polls, and settles itself. The compiled `styles.css`
|
|
525
541
|
sheets (`@openreceive/react`, `@openreceive/elements`) are self-contained and
|
|
526
|
-
scoped: every rule applies only inside what OpenReceive renders
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
542
|
+
scoped: every rule applies only inside what OpenReceive renders. No
|
|
543
|
+
`transpilePackages` entry is needed; the packages ship plain ESM.
|
|
544
|
+
|
|
545
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
546
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
547
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
548
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
530
549
|
|
|
531
550
|
`<Checkout>` is complete as rendered: it already shows the `description` from
|
|
532
551
|
`amountFor` and the collapsed transaction-details panel. Do not build a custom
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (Node.js)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -190,6 +190,8 @@ This list is the short form of https://openreceive.org/guides/checkout-ux.md, fo
|
|
|
190
190
|
UI built on `@openreceive/browser/headless`. Read that before writing
|
|
191
191
|
components.
|
|
192
192
|
|
|
193
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
194
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
193
195
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
194
196
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
195
197
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -217,11 +219,25 @@ components.
|
|
|
217
219
|
"switch payment method".
|
|
218
220
|
- No "Open wallet" button on desktop.
|
|
219
221
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
220
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
223
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
224
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
225
|
+
|
|
226
|
+
```js
|
|
227
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
228
|
+
|
|
229
|
+
const images = await loadPayTutorialImages();
|
|
230
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
234
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
235
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
236
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
237
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
238
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
239
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
240
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
225
241
|
|
|
226
242
|
## More documentation
|
|
227
243
|
|
|
@@ -451,8 +467,12 @@ import "@openreceive/react/styles.css";
|
|
|
451
467
|
The checkout renders, polls, and settles itself. The compiled `styles.css`
|
|
452
468
|
sheets (`@openreceive/react`, `@openreceive/elements`) are self-contained — a
|
|
453
469
|
plain `<link rel="stylesheet">` works with no build step — and scoped: every
|
|
454
|
-
rule applies only inside what OpenReceive renders
|
|
455
|
-
|
|
470
|
+
rule applies only inside what OpenReceive renders.
|
|
471
|
+
|
|
472
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
473
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
474
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
475
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
456
476
|
|
|
457
477
|
`<Checkout>` is complete as rendered: it already shows the `description` from
|
|
458
478
|
`amountFor` and the collapsed transaction-details panel. Do not build a custom
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (PHP)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -216,6 +216,8 @@ The drop-in (`<openreceive-checkout>`, from the release's standalone tarball or
|
|
|
216
216
|
of https://openreceive.org/guides/checkout-ux.md, for a UI built on
|
|
217
217
|
`@openreceive/browser/headless`. Read that before writing components.
|
|
218
218
|
|
|
219
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
220
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
219
221
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
220
222
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
221
223
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -243,11 +245,25 @@ of https://openreceive.org/guides/checkout-ux.md, for a UI built on
|
|
|
243
245
|
"switch payment method".
|
|
244
246
|
- No "Open wallet" button on desktop.
|
|
245
247
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
246
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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.
|
|
251
267
|
|
|
252
268
|
## More documentation
|
|
253
269
|
|
|
@@ -499,6 +515,11 @@ and the browser snapshots are snake_case throughout.
|
|
|
499
515
|
|
|
500
516
|
### 5. Render checkout
|
|
501
517
|
|
|
518
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
519
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
520
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
521
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
522
|
+
|
|
502
523
|
Unpack the release's `standalone-checkout-<version>.tar.gz` into a directory
|
|
503
524
|
your web server serves — `public/openreceive/` here — and add two tags plus
|
|
504
525
|
the element:
|
|
@@ -515,8 +536,7 @@ the element:
|
|
|
515
536
|
|
|
516
537
|
The module registers `<openreceive-checkout>` as it loads; the element creates
|
|
517
538
|
the checkout for `reference`, then renders, polls and settles itself. The
|
|
518
|
-
stylesheet is scoped to what OpenReceive renders
|
|
519
|
-
any CSS framework. The checkout follows the payer's theme; on a page that is
|
|
539
|
+
stylesheet is scoped to what OpenReceive renders. The checkout follows the payer's theme; on a page that is
|
|
520
540
|
always one theme, lock it with `theme="dark"`. React/Vue/Svelte/Angular apps
|
|
521
541
|
use the matching wrapper package instead — same attributes
|
|
522
542
|
([Frontend checkout](https://openreceive.org/guides/frontend-checkout.md)); a custom UI builds on
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (Rails)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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
|
|
@@ -197,6 +197,8 @@ The engine serves JSON only, so the view is yours — but the drop-ins
|
|
|
197
197
|
list is the short form of https://openreceive.org/guides/checkout-ux.md, for a UI
|
|
198
198
|
built on `@openreceive/browser/headless`. Read that before writing components.
|
|
199
199
|
|
|
200
|
+
- Check Bitcoin → Switch payment method → Bitcoin: the grid must hide the
|
|
201
|
+
Lightning invoice, then restore the same bolt11 without another mint.
|
|
200
202
|
- `createCheckoutController` is the engine. Do not hand-roll a poll loop.
|
|
201
203
|
- `createCheckoutStatusModel` for the status line. Do not draw a
|
|
202
204
|
Cart → Pay → Done stepper. Read the model's `phase`, not the snapshot's.
|
|
@@ -224,11 +226,25 @@ built on `@openreceive/browser/headless`. Read that before writing components.
|
|
|
224
226
|
"switch payment method".
|
|
225
227
|
- No "Open wallet" button on desktop.
|
|
226
228
|
- Wallet suggestions: `getPaymentWizardRoutes()` +
|
|
227
|
-
`createWizardRouteDisplays`. Lightning only.
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
`createWizardRouteDisplays`. Lightning only. Logos are data URIs; tutorial
|
|
230
|
+
images load from a JavaScript chunk. For a custom headless UI, load it when
|
|
231
|
+
a tutorial opens and look up the returned table by the tutorial's `path`:
|
|
232
|
+
|
|
233
|
+
```js
|
|
234
|
+
import { loadPayTutorialImages } from "@openreceive/browser/headless";
|
|
235
|
+
|
|
236
|
+
const images = await loadPayTutorialImages();
|
|
237
|
+
const src = images[tutorial.path]; // data URI for the selected tutorial
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Render `src` as the image source and update your UI after loading. Existing
|
|
241
|
+
display objects do not update: their `tutorial.image` stays `undefined` if
|
|
242
|
+
created before loading. Alternatively, await the loader, recreate the displays
|
|
243
|
+
with `createWizardRouteDisplays`, and render the new `tutorial.image`.
|
|
244
|
+
Show the caption while loading or if loading fails; never use an empty image
|
|
245
|
+
source. Deploy all JavaScript chunks and allow `data:` in CSP `img-src`.
|
|
246
|
+
For missing images, check CSP errors, failed chunks, and stale displays.
|
|
247
|
+
Registry paths are lookup keys; there is no asset option or image route.
|
|
232
248
|
The registry answers ~37 wallets: pass
|
|
233
249
|
`providerPreviewLimit` and build "show all" from `display.providerCount`,
|
|
234
250
|
or they push the QR off the screen.
|
|
@@ -521,12 +537,16 @@ consoles) the client is built lazily so no live wallet is needed.
|
|
|
521
537
|
|
|
522
538
|
### Render the checkout
|
|
523
539
|
|
|
540
|
+
Serve the compiled `styles.css` without Tailwind processing: import it from
|
|
541
|
+
JavaScript (with a CSS-capable bundler) or use a plain `<link rel="stylesheet">`.
|
|
542
|
+
Do not `@import` it into the host Tailwind entry. Its zero-specificity rules
|
|
543
|
+
allow host styles to override checkout styles; scoping does not prevent that.
|
|
544
|
+
|
|
524
545
|
The engine serves JSON checkout routes only — rendering is your view. Any
|
|
525
546
|
OpenReceive frontend package works against the `/openreceive` mount; the
|
|
526
547
|
smallest is the custom element (its default `prefix` is already
|
|
527
548
|
`/openreceive`, and the package ships a self-contained `styles.css` a plain
|
|
528
|
-
stylesheet link can serve; it is scoped to what OpenReceive renders
|
|
529
|
-
sits safely next to any CSS framework in any order):
|
|
549
|
+
stylesheet link can serve; it is scoped to what OpenReceive renders):
|
|
530
550
|
|
|
531
551
|
```erb
|
|
532
552
|
<%# app/views/orders/pay.html.erb %>
|
|
@@ -534,7 +554,7 @@ sits safely next to any CSS framework in any order):
|
|
|
534
554
|
```
|
|
535
555
|
|
|
536
556
|
```js
|
|
537
|
-
// In your JS bundle (
|
|
557
|
+
// In your JS bundle (esbuild/webpacker with CSS support):
|
|
538
558
|
import { defineElements } from "@openreceive/elements";
|
|
539
559
|
import "@openreceive/elements/styles.css"; // or link the compiled styles.css
|
|
540
560
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenReceive agent directions (WordPress + WooCommerce)
|
|
2
2
|
|
|
3
|
-
These directions describe OpenReceive 0.4.
|
|
3
|
+
These directions describe OpenReceive 0.4.9.
|
|
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.
|
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.
|
|
4
|
+
version: 0.4.9
|
|
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.
|
|
18
|
+
version: 0.4.9
|
|
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.
|
|
25
|
+
version: 0.4.9
|
|
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.
|
|
32
|
+
version: 0.4.9
|
|
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.
|
|
39
|
+
version: 0.4.9
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: rails
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|