From f8fa6489c1c20a05176e363b61fe331443dd2660 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 1 Aug 2026 01:29:10 +0200 Subject: [PATCH] =?UTF-8?q?release:=20psi=200.8.1=20=E2=80=94=20Menu=20dis?= =?UTF-8?q?missal=20correctness=20(D58)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All three packages bump in lockstep. This is the first release under .changeset/config.json's new `fixed` group, which enforces the lockstep rule CLAUDE.md states — before it, `changeset version` would have shipped react 0.8.1 with tokens and mcp stranded at 0.8.0. tokens and mcp carry a note explaining the contentless bump, so consumers who pull 0.8.1 can see why nothing changed for them. Co-Authored-By: Claude Opus 5 --- .changeset/menu-dismissal-correctness.md | 21 --------------------- packages/mcp/CHANGELOG.md | 6 ++++++ packages/mcp/package.json | 2 +- packages/react/CHANGELOG.md | 22 ++++++++++++++++++++++ packages/react/package.json | 2 +- packages/tokens/CHANGELOG.md | 6 ++++++ packages/tokens/package.json | 2 +- 7 files changed, 37 insertions(+), 24 deletions(-) delete mode 100644 .changeset/menu-dismissal-correctness.md diff --git a/.changeset/menu-dismissal-correctness.md b/.changeset/menu-dismissal-correctness.md deleted file mode 100644 index a76f1f5..0000000 --- a/.changeset/menu-dismissal-correctness.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@handamade/psi-react": patch ---- - -Menu no longer reports a dismissal for a menu the consumer has already closed (D58) - -Two menus sharing one `openId` — the shape of the `row-actions` pattern — -left **both** closed when you switched between them. Clicking B's trigger -light-dismisses A at the platform level before the consumer's click handler -runs, so A's popover was already closed by the time its `open` prop flipped; -the sync effect then armed no suppression and A's queued `toggle` reported -`onClose("outside")`, clearing `openId` and closing B milliseconds after it -opened. - -`onClose` now carries an invariant: a dismissal is only ever reported for a -menu that is still open according to its own `open` prop. Genuine light -dismiss, Esc and item-select are unaffected. No API change. - -Also fixed: the trigger wrapper is the anchor box for both placement paths and -was being stretched to its cell as a grid or flex-column item, so the menu -anchored to the cell edge instead of the trigger. It now sizes to its trigger. diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 2468630..693b6ca 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,11 @@ # @handamade/psi-mcp +## 0.8.1 + +Version bump only — no change to this package. `@handamade/psi-*` are released +in lockstep at one version number, so a fix in any one of them bumps all three. +The 0.8.1 fix is in `@handamade/psi-react` (Menu dismissal correctness, D58). + ## 0.8.0 ### Minor Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 763c731..b10d3bb 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@handamade/psi-mcp", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "description": "MCP server and agent-context generator for the Psi (Ψ) design system", "type": "module", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 94029b4..db6229e 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,27 @@ # @handamade/psi-react +## 0.8.1 + +### Patch Changes + +- 93f5399: Menu no longer reports a dismissal for a menu the consumer has already closed (D58) + + Two menus sharing one `openId` — the shape of the `row-actions` pattern — + left **both** closed when you switched between them. Clicking B's trigger + light-dismisses A at the platform level before the consumer's click handler + runs, so A's popover was already closed by the time its `open` prop flipped; + the sync effect then armed no suppression and A's queued `toggle` reported + `onClose("outside")`, clearing `openId` and closing B milliseconds after it + opened. + + `onClose` now carries an invariant: a dismissal is only ever reported for a + menu that is still open according to its own `open` prop. Genuine light + dismiss, Esc and item-select are unaffected. No API change. + + Also fixed: the trigger wrapper is the anchor box for both placement paths and + was being stretched to its cell as a grid or flex-column item, so the menu + anchored to the cell edge instead of the trigger. It now sizes to its trigger. + ## 0.8.0 ### Minor Changes diff --git a/packages/react/package.json b/packages/react/package.json index e983a84..23c5c1e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@handamade/psi-react", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "type": "module", "main": "dist/index.js", diff --git a/packages/tokens/CHANGELOG.md b/packages/tokens/CHANGELOG.md index 2c726c8..70d1a63 100644 --- a/packages/tokens/CHANGELOG.md +++ b/packages/tokens/CHANGELOG.md @@ -1,5 +1,11 @@ # @handamade/psi-tokens +## 0.8.1 + +Version bump only — no change to this package. `@handamade/psi-*` are released +in lockstep at one version number, so a fix in any one of them bumps all three. +The 0.8.1 fix is in `@handamade/psi-react` (Menu dismissal correctness, D58). + ## 0.8.0 ### Minor Changes diff --git a/packages/tokens/package.json b/packages/tokens/package.json index d025a80..8c4249f 100644 --- a/packages/tokens/package.json +++ b/packages/tokens/package.json @@ -1,6 +1,6 @@ { "name": "@handamade/psi-tokens", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "type": "module", "exports": {