@odla-ai/chapter 0.42.4 → 0.43.1
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.
- package/dist/index.cjs +135 -106
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +135 -106
- package/dist/index.js.map +1 -1
- package/dist/worker/index.cjs +306 -124
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.js +306 -124
- package/dist/worker/index.js.map +1 -1
- package/package.json +1 -1
- package/runbooks/adopt-existing.md +16 -0
- package/runbooks/greenfield.md +16 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/chapter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.1",
|
|
4
4
|
"description": "A leader/follower foundation for branded membership sites: shared CRM, admin, auth, payments, booking, and explicit record delivery from one defineChapter config.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://odla.ai/docs/packages/chapter",
|
|
@@ -581,6 +581,22 @@ this release. Preserve a host UI/route for non-USD or mismatched pricing. Test
|
|
|
581
581
|
successful payment, duplicate webhook, failure, refund, and subscription
|
|
582
582
|
cancellation before switching the UI.
|
|
583
583
|
|
|
584
|
+
For a shared Stripe account, preserve Chapter's closed partition metadata on
|
|
585
|
+
every new customer, subscription, payment intent, and refund: app, chapter,
|
|
586
|
+
environment, data environment, and stable runtime. Do not infer ownership from
|
|
587
|
+
the Stripe account or Price alone. A Worker with a named runtime prefers its
|
|
588
|
+
`stripe_webhook_secret__<runtime>` endpoint secret. During an existing app's
|
|
589
|
+
upgrade, Chapter falls back to the historical `stripe_webhook_secret` slot only
|
|
590
|
+
when the scoped slot is absent; replace that compatibility path by reconciling a
|
|
591
|
+
dedicated endpoint, without reading or manually copying either secret. The
|
|
592
|
+
signed webhook must apply an exact target
|
|
593
|
+
once, acknowledge a fully tagged sibling with zero local writes, quarantine an
|
|
594
|
+
unmatched event for operators, and accept a metadata-free legacy object only
|
|
595
|
+
when its Stripe customer, subscription, or gift id is already linked to this
|
|
596
|
+
chapter and runtime. Exercise all four paths in development, including a replay
|
|
597
|
+
of the identical body and an event-id collision with changed content, before
|
|
598
|
+
removing any legacy payment adapter.
|
|
599
|
+
|
|
584
600
|
### Calendar and email
|
|
585
601
|
|
|
586
602
|
Complete dev Google booking consent, reconnecting any grant from the retired
|
package/runbooks/greenfield.md
CHANGED
|
@@ -762,7 +762,10 @@ deployed dev origin.
|
|
|
762
762
|
endpoint, stores `stripe_webhook_secret__<name>` under write-only custody,
|
|
763
763
|
and binds `ODLA_RUNTIME`; do not manually reuse one signing secret across
|
|
764
764
|
endpoints. A legacy single-Worker app may still store
|
|
765
|
-
`stripe_webhook_secret` directly.
|
|
765
|
+
`stripe_webhook_secret` directly. An upgraded named-runtime Worker falls back
|
|
766
|
+
to that historical slot only while its scoped endpoint secret is absent;
|
|
767
|
+
reconcile the dedicated endpoint to end the compatibility period without
|
|
768
|
+
reading or copying either secret.
|
|
766
769
|
4. In the guarded `groups` row, set `stripePublishableKey` and `stripePriceId`.
|
|
767
770
|
5. Confirm `policy.merchantDisclosureText` names the merchant the customer will
|
|
768
771
|
see on the charge or receipt, including the chapter relationship when the
|
|
@@ -778,6 +781,18 @@ non-USD or unmatched pricing needs a host UI/route and cannot use the stock
|
|
|
778
781
|
payment presentation. Never accept money until the provider equality check and
|
|
779
782
|
webhook test prove authoritative paid/refunded state and idempotent replay.
|
|
780
783
|
|
|
784
|
+
Chapter tags every newly created Stripe customer, subscription, payment intent,
|
|
785
|
+
and refund with its app, chapter, environment, data environment, and stable
|
|
786
|
+
runtime identity. Do not replace or omit those fields in a host payment route.
|
|
787
|
+
The signed webhook acknowledges a fully tagged sibling event without a local
|
|
788
|
+
write, accepts an untagged legacy event only when the referenced Stripe object is
|
|
789
|
+
already linked to a local application or gift intent, and records a content-free
|
|
790
|
+
receipt for each applied or unmatched event. Prove all three dispositions with
|
|
791
|
+
synthetic test objects: exact target applies once, a sibling target writes zero
|
|
792
|
+
rows, and an unmatched legacy event is quarantined and observable. Replaying the
|
|
793
|
+
same event body must be a no-op; reusing its event id with different content must
|
|
794
|
+
raise a collision signal and must not apply.
|
|
795
|
+
|
|
781
796
|
### Google Calendar
|
|
782
797
|
|
|
783
798
|
Complete the human Google booking consent from provisioning, then:
|