- Normalize Python examples in the bundled Django directions. The local Python test command now includes the same Ruff formatting/lint and mypy checks as the CI matrix, so these failures stop release preparation before tagging.
- Completes the cross-platform release following the partially published v0.4.15; its changes and WordPress fixes are included below.
Included changes from 0.4.15:
-
The website contract requires
/integrations/wordpressto redirect permanently to/integrations/woocommerce. The Rails site consumes this requirement through its docs sync, sharing the existing WooCommerce guide and agent payload. -
WordPress: configure encrypted wallet/swap credentials through stdin with
wp openreceive configure; admin and CLI share preflight, and generic WooCommerce credential writes are rejected. Doctor names failed checks, redacts credentials and exits nonzero on failure. - WooCommerce order-pay returns reopen live Lightning invoices on their own rail. Checkout method switches retain fiat swap minimums; sats limits use grouping. Default gateway titles reflect configured swaps, and missing WooCommerce gets an actionable notice.
- WordPress directions collect wallet and swap codes sequentially, document GMP in web and CLI runtimes, and pin ZIP downloads with a same-tag source fallback. Staged Composer builds refresh the lock content hash.
-
Release directions cover every platform. GitHub draft creation now checks the complete 22-artifact set, including the matching WordPress ZIP, Python distributions and docs bundle; the dry run verifies WordPress packaging.
-
Agent skills now cover every supported stack, including FastAPI and plain PHP, with installation, migration, diagnostics, testing seams, and optional swaps.
- Install the bundled skills into your project with
npx openreceive skills install,openreceive skills install(Python),bin/rails openreceive:skills, orphp artisan openreceive:skills. The default is.agents/skills; use--dir .claude/skillsfor Claude Code. Only OpenReceive's two skill folders are replaced, including obsolete files. - Ship one offline skills bundle per ecosystem:
@openreceive/node, the coreopenreceivegem, PyPIopenreceive, and Composeropenreceive/openreceive. Other npm packages and the Rails/server gems rely on that copy; the WordPress merchant archive excludes it. Doctors point agents to the install command. - Validate that every integration reference is linked from the skill router.
openreceive-railsnow requiresnwc-ruby ~> 0.3. With 0.2.x, a silent relay or an offline wallet behind a live relay could blockmake_invoice(checkout create) and the boot preflight indefinitely: 0.2.x checked its deadline only when a message arrived. 0.3 bounds the whole call, including connect and the info fetch, byrequest_timeout, retries failures that happen before the request is written, and falls through to the next relay in the connection string.- Relay transport failures now normalize to
WALLET_UNAVAILABLE(retryable, HTTP 503) in every engine instead ofOTHER(HTTP 502). New aliases cover nwc-ruby 0.3'sNotSentError,TransportErrorandInfoUnavailableErrornames; three newspec/test-vectors/error-normalization.jsoncases pin them. This matches how the JS NWC client's network errors were already reported.
Rebuilt example artifacts: Node/Express, Fastify, Next.js, Rails, Django, FastAPI, Laravel and static HTML, using OpenReceive 0.4.16. The matching WordPress/WooCommerce ZIP bundles the 0.4.16 PHP engine and checkout.
Validation: full cross-platform CI including Python Ruff and mypy, WordPress integration/browser/plugin checks, and live NWC preflight. No real invoice or manual payment was requested. Optional external-database tests were skipped locally where not configured; GitHub CI supplies those databases.