openreceive-rails 0.4.1 → 0.4.3

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: d96bcbf6cbe2379c285d8fc0f61b59438d75c27af55465be700f0c18ea498dcb
4
- data.tar.gz: 6e97b4d45559953ffca5380313692559579e322df6700f4d165970bced786023
3
+ metadata.gz: 3728f2af46867cb69f88ae8a5d0a9d594ec15fc144c61095b116e6a18c40c26f
4
+ data.tar.gz: c761ba6cc843d76ab40f6bff5a0219be46d3afa8c85f93ecc74f2858bf46d91f
5
5
  SHA512:
6
- metadata.gz: 79214e11c2cd614f5eaac640a65180468d06218775d74415db20f9a3064e097db16575816f8da8acafc2bdd1402fe69019485476db6a44cf7ab336b2a4faa4ff
7
- data.tar.gz: 78e9da4d3da20415f49683c6866b4ef44892b8be1bba3ea637e27080fb0474d64b462871fbce8fb0c40eb8059519f5e2653ff617ef1d9b8e23a70094c76be721
6
+ metadata.gz: 194fedae9e48bd925b89e0aaf6b0aea5b902aa202d64d163dee5d4f3547b551363e83406fe8e939f43d130bcffba6ba6b5f9a2f6079964f64fc583d6aa9511ad
7
+ data.tar.gz: fa6b0b156598591ac4575f081031f4ff8dbd0f808a7b40c88134ae4c4f51c3545dc9290f3cec2c9fbdb63c42952d50344a12809f984ca257d144fde05b615720
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3 - 2026-09-03
4
+
5
+ Version lockstep with the 0.4.3 npm release (container-query checkout
6
+ layout, themed pre-create screens, padded root, money caption).
7
+
8
+ The opportunistic reconcile pass logs one short line per status poll:
9
+ `[openreceive] payment.reconcile.completed: 1 pending attempt_count=1
10
+ window=<from>..<until>` — what the pass decided (zero counts dropped, `of N
11
+ attempts` when a truncated walk could not reach every hash), the same shape
12
+ as the Node engine's line. It replaces the sentence about batched
13
+ `list_transactions` windows. Rails' own request logging for the poll route
14
+ is unchanged; use `config.log_level` or `Rails.logger.silence` there.
15
+
16
+ ## 0.4.2 - 2026-09-03
17
+
18
+ Version lockstep with the 0.4.2 npm release (the scoped frontend stylesheet).
19
+ No Ruby changes.
20
+
3
21
  ## 0.4.1 - 2026-09-02
4
22
 
5
23
  Version lockstep with the 0.4.1 npm release. First version published from CI
@@ -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.1"
8
+ VERSION = "0.4.3"
9
9
  end
10
10
  end
@@ -230,17 +230,25 @@ module OpenReceive
230
230
  # attempts are pending), so operators can watch settlement discovery and
231
231
  # the batched list_transactions window without raising the log level. All
232
232
  # pending attempts share one creation-time window walked at most twice —
233
- # never one wallet call per invoice.
233
+ # never one wallet call per invoice. One short line per poll: this fires
234
+ # on every status poll while a payer waits. Mirrors the JS
235
+ # payment.reconcile.completed line.
234
236
  def log_reconcile_pass(attempts, results, overlap_seconds, observed_at)
235
237
  logger = openreceive_logger
236
238
  return if logger.nil?
237
239
 
238
240
  counts = results.group_by { |checked| checked["status"] }.transform_values(&:length)
241
+ decided = %w[settled pending not_found].filter_map do |status|
242
+ count = counts[status]
243
+ "#{count} #{status.tr('_', ' ')}" unless count.nil? || count.zero?
244
+ end
245
+ decided = ["0 decided"] if decided.empty?
246
+ # Attempts scanned vs hashes decided: a gap is how a truncated scan shows up.
247
+ scanned = results.length == attempts.length ? "" : " of #{attempts.length} attempts"
239
248
  window_from = [attempts.map { |attempt| Integer(attempt.fetch("created_at")) }.min - overlap_seconds, 0].max
240
249
  logger.info(
241
- "[openreceive] reconcile pass: #{attempts.length} pending attempt(s) in one " \
242
- "batched list_transactions window (from #{window_from} until #{observed_at + overlap_seconds}, <=2 walks): " \
243
- "#{counts.map { |status, count| "#{count} #{status}" }.join(', ')}"
250
+ "[openreceive] payment.reconcile.completed: #{decided.join(', ')}#{scanned} " \
251
+ "attempt_count=#{attempts.length} window=#{window_from}..#{observed_at + overlap_seconds}"
244
252
  )
245
253
  rescue StandardError
246
254
  # Diagnostics must never affect the pass.
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Node.js)
2
2
 
3
- These directions describe OpenReceive 0.4.1.
3
+ These directions describe OpenReceive 0.4.3.
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
@@ -439,7 +439,9 @@ import "@openreceive/react/styles.css";
439
439
 
440
440
  The checkout renders, polls, and settles itself. The compiled `styles.css`
441
441
  sheets (`@openreceive/react`, `@openreceive/elements`) are self-contained — a
442
- plain `<link rel="stylesheet">` works with no build step.
442
+ plain `<link rel="stylesheet">` works with no build step — and scoped: every
443
+ rule applies only inside what OpenReceive renders, so the sheet is safe next
444
+ to any CSS framework (Mantine, Bootstrap, your own reset) in any import order.
443
445
 
444
446
  `<Checkout>` is complete as rendered: it already shows the `description` from
445
447
  `amountFor` and the collapsed transaction-details panel. Do not build a custom
@@ -1,6 +1,6 @@
1
1
  # OpenReceive agent directions (Rails)
2
2
 
3
- These directions describe OpenReceive 0.4.1.
3
+ These directions describe OpenReceive 0.4.3.
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
@@ -486,7 +486,8 @@ The engine serves JSON checkout routes only — rendering is your view. Any
486
486
  OpenReceive frontend package works against the `/openreceive` mount; the
487
487
  smallest is the custom element (its default `prefix` is already
488
488
  `/openreceive`, and the package ships a self-contained `styles.css` a plain
489
- stylesheet link can serve):
489
+ stylesheet link can serve; it is scoped to what OpenReceive renders, so it
490
+ sits safely next to any CSS framework in any order):
490
491
 
491
492
  ```erb
492
493
  <%# app/views/orders/pay.html.erb %>
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.1
4
+ version: 0.4.3
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.1
18
+ version: 0.4.3
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.1
25
+ version: 0.4.3
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.1
32
+ version: 0.4.3
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.1
39
+ version: 0.4.3
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rails
42
42
  requirement: !ruby/object:Gem::Requirement