openreceive 0.4.23 → 0.4.25

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: fb5542a9163a02e90baa6f8938172785600029980002c119fde4631b452da20c
4
- data.tar.gz: 7f71eb77da79968df633485d01ca9e7a89bbd839186a1daf1d137323f889daba
3
+ metadata.gz: 92de70ca1044470b160698913fc4bcec615f0529de243fc7df86eddcd6d7cf95
4
+ data.tar.gz: e390588c785aa70eb0641f34e31d6953886592db3c2c24ddd67f8e17e797a1ea
5
5
  SHA512:
6
- metadata.gz: 75465da88449b28ff097b5b4a4d7eadb141e2ba8be2a1e4797ae021fd23ba876df3b50cbef86e7afb0b05df4f718e957dd78a5c4979cda2558e79bb9642c20c4
7
- data.tar.gz: 90884d4fef6027acb5919a5a9d36c0e7d1ba066d13d21db1793c940dad7c2c6653288a26efb0540eccb7b7baf37a4817e99d3826fb58af034aa594bc303ff260
6
+ metadata.gz: 2a14369f2156c50c446260eafe5d4915406d90e3a075a547770f2e0f6fcbd44c9c73c2b89ea3c11266b9afde8df7732a45ae5225cc0cc32f966d27bd74f23283
7
+ data.tar.gz: e6aae3ef1fccb7348e8b48a5150cb2e2d1ba437137256e06adde9c4f37c40666be992dae9c4a63de5ef931551f1afca600470b0af18003ff6c52e63608a904ee
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.25 - 2026-10-13
4
+
5
+ Release with the complete 0.4.25 package family. The bundled agent skill
6
+ adds directions for Flask and NestJS, and every server stack's directions
7
+ link the new guide for mobile apps. No Ruby runtime changes from 0.4.24.
8
+
9
+ ## 0.4.24 - 2026-10-12
10
+
11
+ Release with the complete 0.4.24 package family. The gem's registry page
12
+ now links openreceive.org's Rails page. The bundled agent skill's
13
+ Lovable directions need `@openreceive/*` 0.4.24, whose Supabase functions
14
+ no longer hang when two requests write one order, and keep the app's own
15
+ order flow. Its FastAPI directions run doctor through `dotenv run` and never
16
+ load `.env` into the shell, and the Node, Next.js, Fastify, FastAPI and Django
17
+ directions link the serverless guide. No Ruby runtime changes from 0.4.23.
18
+
3
19
  ## 0.4.23 - 2026-10-11
4
20
 
5
21
  Release with the complete 0.4.23 package family. The bundled agent skill adds
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenReceive
4
- VERSION = "0.4.23"
4
+ VERSION = "0.4.25"
5
5
  end
@@ -2,7 +2,7 @@
2
2
  name: integrate-openreceive
3
3
  description: >
4
4
  Integrate OpenReceive Bitcoin Lightning checkout and optional USDT, USDC,
5
- SOL, and ETH swaps. Use for Node.js, Express, Fastify, Next.js, Rails,
5
+ SOL, and ETH swaps. Use for Node.js, Express, Fastify, Next.js, NestJS, Rails,
6
6
  Python, Django, FastAPI, Laravel, plain PHP, WordPress/WooCommerce,
7
7
  React, Vue, Svelte, Angular, or plain HTML applications, or connecting
8
8
  BTCPay Server to a receive-only NWC wallet. A configured swap provider
@@ -32,10 +32,13 @@ connected wallet; asset and network availability depends on the provider.
32
32
  - Node, Express: [references/node.md](references/node.md)
33
33
  - Node, Fastify: [references/fastify.md](references/fastify.md)
34
34
  - Node, Next.js App Router: [references/next.md](references/next.md)
35
+ - Node, NestJS (Express platform): [references/nestjs.md](references/nestjs.md)
35
36
  - Rails: [references/rails.md](references/rails.md)
36
37
  - Python, FastAPI: [references/fastapi.md](references/fastapi.md)
37
38
  - Plain PHP: [references/php.md](references/php.md)
38
39
  - Django: [references/django.md](references/django.md)
40
+ - Flask: [references/flask.md](references/flask.md) — a one-file Blueprint
41
+ copied from the quickstart; there is no `openreceive.flask` package.
39
42
  - Laravel: [references/laravel.md](references/laravel.md)
40
43
  - WordPress + WooCommerce: [references/woocommerce.md](references/woocommerce.md) — the packaged gateway and merchant settings.
41
44
  - Lovable (TanStack Start on Cloudflare Workers, with Supabase):
@@ -51,11 +54,12 @@ connected wallet; asset and network availability depends on the provider.
51
54
 
52
55
  Install, per adapter — Express: `npm install @openreceive/express @openreceive/react`;
53
56
  Fastify: `npm install @openreceive/fastify @openreceive/react`; Next.js:
54
- `npm install @openreceive/next @openreceive/react`. Swap the UI package (`vue`,
57
+ `npm install @openreceive/next @openreceive/react`; NestJS:
58
+ `npm install @openreceive/express @openreceive/http @openreceive/react`. Swap the UI package (`vue`,
55
59
  `svelte`, `angular`, `elements`) for the frontend the app already has. Install
56
60
  (Rails): `bundle add openreceive-rails`.
57
61
  Django: `pip install "openreceive[django]"`; FastAPI:
58
- `pip install "openreceive[fastapi]"`; Laravel: `composer require openreceive/laravel`;
62
+ `pip install "openreceive[fastapi]"`; Flask: `pip install "openreceive[sqlalchemy]"`; Laravel: `composer require openreceive/laravel`;
59
63
  plain PHP: `composer require openreceive/openreceive nyholm/psr7 nyholm/psr7-server`.
60
64
 
61
65
  ## The three server objects
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/btcpay/full.md
17
17
  - Never tick the spend-capable override to make a save succeed.
18
18
  - Do not suggest rotating or revoking a code because it was pasted here.
19
19
 
20
- These directions describe OpenReceive 0.4.23.
20
+ These directions describe OpenReceive 0.4.25.
21
21
 
22
22
  Connect a BTCPay Server store to a receive-only NWC wallet with the OpenReceive
23
23
  plugin, and optionally let payers pay BTCPay invoices with USDT, USDC, ETH or
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/django/full.md
17
17
  - Do not suggest rotating or revoking a code because it was pasted here.
18
18
  - Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
19
19
 
20
- These directions describe OpenReceive 0.4.23.
20
+ These directions describe OpenReceive 0.4.25.
21
21
 
22
22
  Add OpenReceive to a Django project — the app you are already working in. You
23
23
  do not need a copy of the OpenReceive source: the Python package is on PyPI
@@ -389,7 +389,9 @@ enough; drop the `.md` for the same page a person would read.
389
389
  - https://openreceive.org/guides/environment-variables.md — every variable, and what is deliberately not one
390
390
  - https://openreceive.org/guides/storage.md — the engine tables and the attempt state machine
391
391
  - https://openreceive.org/guides/supabase.md — when the database is Supabase: its pooler, its certificate, and locking the tables away from its Data API
392
+ - https://openreceive.org/guides/serverless.md — when the app runs serverless (Netlify, AWS Lambda, Cloud Run, Google AI Studio): pooled database URLs, timeouts, and why it needs no cron or worker
392
393
  - https://openreceive.org/guides/frontend-checkout.md — the drop-in's props, attributes and slots
394
+ - https://openreceive.org/guides/mobile-apps.md — when a mobile app takes the payment: the checkout page it opens, and what the App Store and Google Play allow
393
395
  - https://openreceive.org/guides/checkout-ux.md — read before building any custom UI
394
396
  - https://openreceive.org/guides/headless-checkout.md — the controller, the display models, refunds
395
397
  - https://openreceive.org/guides/provider-registry.md — where the wallet logos and pay
@@ -405,7 +407,7 @@ enough; drop the `.md` for the same page a person would read.
405
407
  - https://openreceive.org/guides/api-reference.md — every route, option and error code
406
408
  - https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the mounted engine's routes with your own
407
409
  - https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
408
- - https://openreceive.org/guides/flask-recipe.md — the same engine as a Flask Blueprint, if this app is Flask after all
410
+ - https://openreceive.org/agent-directions/flask.md — the same engine as a Flask Blueprint: follow those directions instead if this app is Flask after all
409
411
  - https://openreceive.org/guides.md — the index, if what you need is not above
410
412
 
411
413
  Questions, or a problem with the library itself:
@@ -3,7 +3,7 @@ This is the full file; follow it from Step 0.
3
3
  # OpenReceive agent directions (FastAPI)
4
4
 
5
5
  ```sh
6
- # READ THIS FIRST: this file is 39 KB and a summary drops required steps. Download it whole:
6
+ # READ THIS FIRST: this file is 41 KB and a summary drops required steps. Download it whole:
7
7
  curl -fsSL https://openreceive.org/agent-directions/fastapi/full.md
8
8
  # Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
9
9
  ```
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/fastapi/full.md
17
17
  - Do not suggest rotating or revoking a code because it was pasted here.
18
18
  - Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
19
19
 
20
- These directions describe OpenReceive 0.4.23.
20
+ These directions describe OpenReceive 0.4.25.
21
21
 
22
22
  Add OpenReceive to a FastAPI application — the app you are already working in.
23
23
  You do not need a copy of the OpenReceive source: the engine is on PyPI
@@ -126,6 +126,11 @@ you store it. Ask one question per message.
126
126
  with `uvicorn --env-file .env` (update the app's run script or Procfile, not
127
127
  just your own command). When it is started with Docker Compose, give the
128
128
  service `env_file: .env`. Restart the server after writing the file.
129
+ Doctor needs the file too: run it as
130
+ `dotenv -f .env run -- openreceive doctor …`. The `dotenv` command comes
131
+ with python-dotenv, which `uvicorn --env-file` already needs; if it is
132
+ missing, `pip install "python-dotenv[cli]"`. Never `source`, `export` or
133
+ `cat` the file: the codes contain `&`, and the shell prints the pieces.
129
134
 
130
135
  Do not invent placeholder URIs. Start the quickstart only once `NWC_URI` is
131
136
  saved and `LSC_URI_PRIMARY` is saved or explicitly declined. The first boot
@@ -133,8 +138,9 @@ runs the receive-only preflight: if it reports spend methods such as
133
138
  `pay_invoice`, remove `NWC_URI` from `.env` and ask for a receive-only code
134
139
  again. Never set the spend-capable override to get past it.
135
140
 
136
- After the router is wired, run `openreceive doctor --app <module>:app`. It
137
- reports `NWC_URI` presence without printing it, probes the wallet, and names
141
+ After the router is wired, run
142
+ `dotenv -f .env run -- openreceive doctor --app <module>:app`. It reports
143
+ `NWC_URI` presence without printing it, probes the wallet, and names
138
144
  any hook still on a placeholder and whether the migration ran. Exit code 1 is a
139
145
  finding to fix, not a reason to skip the check.
140
146
 
@@ -152,7 +158,8 @@ Only then start the quickstart.
152
158
  ## After the quickstart — hand over, then stop
153
159
 
154
160
  The quickstart is done when
155
- `openreceive doctor --app <module>:app --url <app url>` is clean and this app
161
+ `dotenv -f .env run -- openreceive doctor --app <module>:app --url <app url>`
162
+ is clean and this app
156
163
  serves the checkout page for one of its orders. Doctor names any failed check
157
164
  and exits nonzero; fix it before going on.
158
165
 
@@ -383,7 +390,9 @@ enough; drop the `.md` for the same page a person would read.
383
390
  - https://openreceive.org/guides/environment-variables.md — every variable, and what is deliberately not one
384
391
  - https://openreceive.org/guides/storage.md — the payment tables and the attempt state machine
385
392
  - https://openreceive.org/guides/supabase.md — when the database is Supabase: its pooler, its certificate, and locking the tables away from its Data API
393
+ - https://openreceive.org/guides/serverless.md — when the app runs serverless (Netlify, AWS Lambda, Cloud Run, Google AI Studio): pooled database URLs, timeouts, and why it needs no cron or worker
386
394
  - https://openreceive.org/guides/frontend-checkout.md — the drop-in's props, attributes and slots
395
+ - https://openreceive.org/guides/mobile-apps.md — when a mobile app takes the payment: the checkout page it opens, and what the App Store and Google Play allow
387
396
  - https://openreceive.org/guides/checkout-ux.md — read before building any custom UI
388
397
  - https://openreceive.org/guides/headless-checkout.md — the controller, the display models, refunds
389
398
  - https://openreceive.org/guides/provider-registry.md — where the wallet logos and pay
@@ -399,7 +408,7 @@ enough; drop the `.md` for the same page a person would read.
399
408
  - https://openreceive.org/guides/api-reference.md — every route, option and error code
400
409
  - https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the shipped adapter's routes with your own
401
410
  - https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
402
- - https://openreceive.org/guides/flask-recipe.md — the same engine as a Flask Blueprint, if this app is Flask after all
411
+ - https://openreceive.org/agent-directions/flask.md — the same engine as a Flask Blueprint: follow those directions instead if this app is Flask after all
403
412
  - https://openreceive.org/guides.md — the index, if what you need is not above
404
413
 
405
414
  Questions, or a problem with the library itself:
@@ -436,7 +445,7 @@ with the Django quickstart. A page without a bundler uses
436
445
 
437
446
  | | Packages |
438
447
  | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
439
- | Server | `openreceive[fastapi]`, `openreceive[django]`, `openreceive[sqlalchemy]` (Flask and plain WSGI/ASGI: the Flask recipe) |
448
+ | Server | `openreceive[fastapi]`, `openreceive[django]`, `openreceive[sqlalchemy]` (Flask and plain WSGI/ASGI: [the Flask quickstart](https://openreceive.org/guides/quickstart-flask.md)) |
440
449
  | Frontend | `@openreceive/react`, `@openreceive/vue`, `@openreceive/svelte`, `@openreceive/angular`, `@openreceive/elements` (plain HTML) |
441
450
 
442
451
  Use `uv` or a virtualenv on Python 3.10 or newer. A system Python 3.9 cannot
@@ -658,8 +667,13 @@ send it after commit.
658
667
 
659
668
  A page without a bundler renders the same checkout as a custom element:
660
669
  `<openreceive-checkout reference="…" prefix="/openreceive">` from
661
- `@openreceive/elements`. You can also serve its standalone build from your
662
- static directory.
670
+ `@openreceive/elements`. For Jinja templates without a JavaScript build, serve
671
+ its standalone build from your static directory: copy
672
+ `openreceive-checkout.js` and `openreceive-checkout.css` from
673
+ `node_modules/@openreceive/elements/dist/standalone/` to `static/openreceive/`,
674
+ and load both on the checkout page. The `openreceive` package from PyPI carries
675
+ the same two files in `openreceive/django/static/openreceive/`, so you can copy
676
+ them from there without npm.
663
677
 
664
678
  Buy a Button is a runnable illustration of the boundary
665
679
  (`examples/buttons/server/fastapi`).
@@ -671,9 +685,16 @@ shape onto the models in THIS app.
671
685
  ### 6. Verify
672
686
 
673
687
  ```sh
674
- openreceive doctor --app main:app
688
+ dotenv -f .env run -- openreceive doctor --app main:app
675
689
  ```
676
690
 
691
+ Doctor reads the process environment. `dotenv -f .env run --` loads `.env`
692
+ into it, as `uvicorn --env-file .env` does for the server. The `dotenv`
693
+ command comes with python-dotenv, which `uvicorn --env-file` needs anyway; if
694
+ it is missing, run `pip install "python-dotenv[cli]"`. Never `source` or
695
+ `export` `.env` in a shell: the codes contain `&`, and the shell splits the
696
+ line and prints the pieces.
697
+
677
698
  `openreceive doctor` checks Python, `NWC_URI`, and swap-provider
678
699
  configuration. It also probes the wallet relay to confirm the code is
679
700
  receive-only. With `--app module:attr` (your FastAPI app, the router, or an
@@ -3,7 +3,7 @@ This is the full file; follow it from Step 0.
3
3
  # OpenReceive agent directions (Fastify)
4
4
 
5
5
  ```sh
6
- # READ THIS FIRST: this file is 38 KB and a summary drops required steps. Download it whole:
6
+ # READ THIS FIRST: this file is 39 KB and a summary drops required steps. Download it whole:
7
7
  curl -fsSL https://openreceive.org/agent-directions/fastify/full.md
8
8
  # Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
9
9
  ```
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/fastify/full.md
17
17
  - Do not suggest rotating or revoking a code because it was pasted here.
18
18
  - Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
19
19
 
20
- These directions describe OpenReceive 0.4.23.
20
+ These directions describe OpenReceive 0.4.25.
21
21
 
22
22
  Add OpenReceive to a Fastify application — the app you are already working in.
23
23
  You do not need a copy of the OpenReceive source: the packages are on npm, and
@@ -372,8 +372,10 @@ enough; drop the `.md` for the same page a person would read.
372
372
  - https://openreceive.org/guides/environment-variables.md — every variable, and what is deliberately not one
373
373
  - https://openreceive.org/guides/storage.md — the payment tables and the attempt state machine
374
374
  - https://openreceive.org/guides/supabase.md — when the database is Supabase: its pooler, its certificate, and locking the tables away from its Data API
375
+ - https://openreceive.org/guides/serverless.md — when the app runs serverless (Netlify, AWS Lambda, Cloud Run, Google AI Studio): pooled database URLs, timeouts, and why it needs no cron or worker
375
376
  - https://openreceive.org/guides/node-orms.md — recipes for Prisma, Drizzle, Knex, TypeORM, Sequelize
376
377
  - https://openreceive.org/guides/frontend-checkout.md — the drop-in's props, attributes and slots
378
+ - https://openreceive.org/guides/mobile-apps.md — when a mobile app takes the payment: the checkout page it opens, and what the App Store and Google Play allow
377
379
  - https://openreceive.org/guides/checkout-ux.md — read before building any custom UI
378
380
  - https://openreceive.org/guides/headless-checkout.md — the controller, the display models, refunds
379
381
  - https://openreceive.org/guides/provider-registry.md — where the wallet logos and pay