openreceive-rails 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: 6f793a145de2bebdefe26d6f4ecbd4c4a05ab32a07fe2116dea2475026756de2
4
- data.tar.gz: 02d8c69459412f30c6d2088b9e38c36d65a84835301000d6aea90c773de0ea0a
3
+ metadata.gz: 2a9b3a9a1defa5d75a860f9871c92f9b30e442db9a78933e6c1c6ac1335f4282
4
+ data.tar.gz: 12e620ec2f21624bfe02ee21accf46a8aa20aaf750ed7ef44b42b757d4e2f9c3
5
5
  SHA512:
6
- metadata.gz: bed20c3dc26024233a0d559ebd0db8722e0e6e8f6abac2c240708095fa27dc606b0e45d5fc0e37808be6e7548ea0b1bd4d8406bce59793fb4ffaf13f7a1d74b1
7
- data.tar.gz: 10fedac91227451cecda6185cdd02639f7e1595d2a5013c933a654a79d95ffd32dd6e13b0bc8636fa80b7483f3d8537a70171dfd1f9264a1da5c1f1895dd4424
6
+ metadata.gz: f92dd48e46ada6f2e24f7a4b640aeea2b30d24a500fdfc3570d26e4550b72c3951148b34faa6d0a1e2848185dd5a5aa90ae30a7224250e6549e63080b7cf1a90
7
+ data.tar.gz: 972899e0cc861d98abbd796fbc8712d84a3ff40e239f16602753f5e86f552a684b3be85fa3fcde9743be71419bd8df9a69951b2a639f86fed737c3b9cc726765
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.25 - 2026-10-13
4
+
5
+ Release with the complete 0.4.25 package family. The reconcile gate's
6
+ interval now also runs from the end of the last pass, not only from its
7
+ claim, as in every other engine. A pass slower than the interval used to
8
+ leave the gate open when it ended, so each request in a checkout's burst of
9
+ status checks ran a wallet scan of its own. The gate row stores
10
+ `finished_at`; older engines sharing the table ignore it. The bundled agent
11
+ skill adds directions for Flask and NestJS, and every server stack's
12
+ directions link the new guide for mobile apps.
13
+
14
+ ## 0.4.24 - 2026-10-12
15
+
16
+ Release with the complete 0.4.24 package family. The gem's registry page
17
+ now links openreceive.org's Rails page, and its documentation link is the
18
+ Rails quickstart there. The bundled agent skill's Lovable directions need
19
+ `@openreceive/*` 0.4.24, whose Supabase functions no longer hang when two
20
+ requests write one order, and keep the app's own order flow. Its FastAPI directions run doctor through `dotenv run` and never
21
+ load `.env` into the shell, and the Node, Next.js, Fastify, FastAPI and Django
22
+ directions link the serverless guide. No Ruby runtime changes from 0.4.23.
23
+
3
24
  ## 0.4.23 - 2026-10-11
4
25
 
5
26
  Release with the complete 0.4.23 package family. The bundled agent skill adds
data/README.md CHANGED
@@ -7,6 +7,8 @@ and sends payments directly to a wallet you control. Mount the engine, connect
7
7
  a receive-only Nostr Wallet Connect (NWC) wallet, and connect three hooks:
8
8
  authorize a request, look up the order amount, and handle a settled payment.
9
9
 
10
+ Docs and setup: [openreceive.org/integrations/rails](https://openreceive.org/integrations/rails)
11
+
10
12
  OpenReceive supports optional swaps from **USDT, USDC, SOL, and ETH** through
11
13
  a configured swap provider. The provider converts the payment to **BTC over
12
14
  Lightning**, which settles into the merchant's connected wallet. Available
@@ -79,6 +79,11 @@ class OpenReceiveMeta < ActiveRecord::Base
79
79
  current = parse_gate(row&.value)
80
80
  claimed = current["claimed_at"]
81
81
  return nil if claimed && fresh_timestamp?(now, claimed, interval_seconds)
82
+ # The interval also runs from the end of the last pass. A pass that takes
83
+ # longer than the interval would otherwise leave the gate open on release,
84
+ # and every sequential request after it would pay a full scan of its own.
85
+ finished = current["finished_at"]
86
+ return nil if finished && fresh_timestamp?(now, finished, interval_seconds)
82
87
  return nil if current.fetch("lease_until", 0) > now && current.fetch("claimed_at", 0) <= now + 60
83
88
 
84
89
  gate = {
@@ -105,7 +110,10 @@ class OpenReceiveMeta < ActiveRecord::Base
105
110
  raise ArgumentError, "Reconciliation checkpoint exceeded bounded cohorts" if windows.length > 2 || windows.any? { |w| w.fetch("attempts").length > 200 }
106
111
 
107
112
  gate["scheduler"] = scheduler
108
- gate["lease_until"] = 0 if release
113
+ if release
114
+ gate["lease_until"] = 0
115
+ gate["finished_at"] = Integer(now)
116
+ end
109
117
  encoded = JSON.generate(gate)
110
118
  raise ArgumentError, "Reconciliation checkpoint exceeded 128 KiB" if encoded.bytesize > 128 * 1024
111
119
 
@@ -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.23"
8
+ VERSION = "0.4.25"
9
9
  end
10
10
  end
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.23
4
+ version: 0.4.25
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.23
18
+ version: 0.4.25
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.23
25
+ version: 0.4.25
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.23
32
+ version: 0.4.25
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.23
39
+ version: 0.4.25
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rails
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -126,15 +126,15 @@ files:
126
126
  - lib/openreceive/reconcile_scan.rb
127
127
  - lib/rails/commands/openreceive/openreceive_command.rb
128
128
  - lib/tasks/openreceive.rake
129
- homepage: https://openreceive.org
129
+ homepage: https://openreceive.org/integrations/rails
130
130
  licenses:
131
131
  - MIT
132
132
  metadata:
133
- homepage_uri: https://openreceive.org
133
+ homepage_uri: https://openreceive.org/integrations/rails
134
134
  source_code_uri: https://github.com/openreceive/openreceive
135
135
  changelog_uri: https://github.com/openreceive/openreceive/blob/master/packages/ruby/openreceive-rails/CHANGELOG.md
136
136
  bug_tracker_uri: https://github.com/openreceive/openreceive/issues
137
- documentation_uri: https://github.com/openreceive/openreceive/blob/master/docs/guides/quickstart-rails.md
137
+ documentation_uri: https://openreceive.org/guides/quickstart-rails
138
138
  rubygems_mfa_required: 'true'
139
139
  rdoc_options: []
140
140
  require_paths: