Skip to content

Commit 434bb5b

Browse files
chore(release): v1.2.1 changelog (support fix + screening copy + checkout gate)
p2pdotme#15 bumped package.json to 1.2.1 but didn't update CHANGELOG. Backfill the 1.2.0 entry (offramp v2 p2pdotme#11 + multi-signer sign-in p2pdotme#13, already published) and document 1.2.1 as: support-widget fix (p2pdotme#15) + screening rejection copy + Checkout one-in-flight-order gate. Version stays 1.2.1 (unpublished). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 66165fe commit 434bb5b

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,72 @@ and the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. While
77
the package is `0.x`, minor releases may introduce additive prop changes;
88
patch releases stay backward-compatible.
99

10+
## [1.2.1] — 2026-06-07
11+
12+
### Fixed — Support widget (`<ContactSupport>` / `<OrderAction>`)
13+
14+
- `ContactSupport`: the chat-open effect listed `modalState.kind` in its
15+
own deps and set it mid-flight, cancelling the in-flight async before
16+
`openChatwoot` — so the "Loading chat" overlay never dismissed (chat
17+
opened underneath). The effect is now keyed solely on `chatAttempt`, so
18+
neither a self-set state nor a prop change re-fires it.
19+
- `OrderAction`: `useNowTick` armed an unconditional 1s `setInterval` in
20+
every row forever (a per-second render storm across order history). The
21+
ticker now arms only for time-live rows via a new `OrderActionState.live`
22+
flag; static / terminal rows never tick. `themeToCssVars` is memoized.
23+
24+
### Changed — Checkout concurrency gate: one in-flight order at a time
25+
26+
- The `<Checkout>` (onramp) pending-order gate now blocks a new placement
27+
whenever **any** order is pending, regardless of amount or credit. The
28+
user lands on the "Finish your pending order first" screen and must
29+
complete or cancel the pending order (with a **Resume that order**
30+
affordance when `onResumeRequest` is wired) before placing another.
31+
- Removed the previous same-amount **auto-resume** and the credit-gated
32+
different-amount allowance. Credit still drives the pre-order breakdown
33+
but no longer affects the block / allow decision. Stale legacy retail
34+
orders are still filtered out (`keepOnlyB2BPending`) so a "pending
35+
forever" order can't permanently lock the user out. No public API
36+
change; internal `computeGateDecision` no longer takes a `credit` arg.
37+
38+
### Changed — Screening rejection copy
39+
40+
- The `user_restricted` screening rejection now surfaces a generic
41+
"We saw unusual activity — please wait for some time as a minor update"
42+
message instead of disclosing the repeated-cancellation reason and an
43+
exact retry countdown. `restrictedUntil` is still carried on the error
44+
context; the internal `formatRestrictionTime` helper was removed.
45+
46+
## [1.2.0] — 2026-06-06
47+
48+
### Added — Offramp v2 (allocation-funded cashout)
49+
50+
- Opt-in, backward-compatible support for the TradeStars offramp v2
51+
(per-user-proxy allocation). New `CashoutProps.fetchAvailableOfframp`
52+
sources the Max / insufficient-amount affordance from an integrator
53+
allocation instead of the wallet's `balanceOf`.
54+
- Retry-from-cancelled: the offramp machine retains `feeUsdc` and exposes
55+
`retryPlace` / `canRetryPlace`; the cancelled screen gains a Try-again
56+
button that re-places a fresh SELL for the same amount.
57+
- `<PaymentHistory>` gains optional `resolveExtraAddresses`, which merges
58+
the user's per-user-proxy offramp orders (`order.user`) with the EOA's,
59+
de-duped and re-sorted, bypassing the B2B intersection.
60+
61+
### Changed — chainId-bound multi-signer support sign-in
62+
63+
- Support sign-in (`<Support>` / bridge) is now multi-signer aware
64+
(EOA + ERC-1271 + ERC-6492). The signed message and `POST /auth/sign-in`
65+
body bind the wallet's `chainId`
66+
(`${purpose}:${address}:${chainId}:${timestamp}`) so an ERC-1271
67+
signature can't be replayed across chains.
68+
- `SupportSigner` gains a `getChainId` resolver; the chainId is resolved
69+
**live** from the connected wallet at sign time (Privy parses its CAIP-2
70+
id; Thirdweb reads the active chain). It is **mandatory** — sign-in
71+
throws before signing/POSTing if it can't be resolved (no default).
72+
Privy + Thirdweb adapters carry it through.
73+
- **Lockstep / breaking:** must ship together with the companion bridge
74+
multi-signer release, or sign-in 401s on a message-format mismatch.
75+
1076
## [1.1.2] — 2026-05-27
1177

1278
### Added — B2B order filtering (`<PaymentHistory>`)

0 commit comments

Comments
 (0)