diff --git a/.changeset/global-overlay-singletons.md b/.changeset/global-overlay-singletons.md deleted file mode 100644 index 61f75fd..0000000 --- a/.changeset/global-overlay-singletons.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@dunky.dev/dom-overlay': patch -'@dunky.dev/dom-scroll-lock': patch ---- - -Anchor the overlay layer stack and the scroll-lock registry on a realm-global -keyed by `Symbol.for`, so they survive the module being loaded more than once in -a single page (duplicate bundles in a monorepo or micro-frontend). - -Both were plain module-level singletons. When a bundler ships two copies of the -module — a common monorepo/micro-frontend hazard — each copy got its own stack -and its own lock registry, so their "which layer is topmost" and "is the page -still locked" decisions drifted apart: Escape or an outside press could dismiss -the wrong dialog in a nested stack, and scroll lock could double-lock or leak. -Radix hit the same class of bug with its focus-scope stack -(radix-ui/primitives#2815). - -The shared state now resolves through a well-known global symbol, so every -duplicate copy rendezvous on the same instance. It is resolved lazily on first -use, so the packages keep their `sideEffects: false` contract (no import-time -global write). No API change. diff --git a/.changeset/publish-spec-and-source.md b/.changeset/publish-spec-and-source.md deleted file mode 100644 index b7c7fa1..0000000 --- a/.changeset/publish-spec-and-source.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -'@dunky.dev/controllable': patch -'@dunky.dev/dialog': patch -'@dunky.dev/dom-focus-trap': patch -'@dunky.dev/dom-navigation': patch -'@dunky.dev/dom-overlay': patch -'@dunky.dev/dom-scroll-lock': patch -'@dunky.dev/overlay': patch -'@dunky.dev/react-dialog': patch -'@dunky.dev/react-use-focus-trap': patch -'@dunky.dev/react-use-scroll-lock': patch ---- - -Ship `SPEC.md` and the TypeScript sources in the published package, alongside -the built `dist`. - -The tarball used to carry `dist` and `README.md` only, so the two things you -actually want when a behavior surprises you — the spec that defines the contract -and the code that implements it — were reachable only by finding the repo and -guessing which tag matches the installed version. Both now sit in -`node_modules//`, pinned to the exact version installed. - -Nothing about resolution changes: `publishConfig` still points `main`, `types`, -and `exports` at `dist`, and the sources are inert payload — read them, don't -import them. diff --git a/.changeset/util-package-specs.md b/.changeset/util-package-specs.md deleted file mode 100644 index f75d919..0000000 --- a/.changeset/util-package-specs.md +++ /dev/null @@ -1,8 +0,0 @@ ---- ---- - -Add `SPEC.md` to the eight util and hook packages that lacked one — the two -core utils (`controllable`, `overlay`), the four DOM utils (`focus-trap`, -`navigation`, `overlay`, `scroll-lock`), and the two React hooks -(`use-focus-trap`, `use-scroll-lock`). Docs only; no package changes, so this -changeset carries no version bump. diff --git a/packages/core/dialog/CHANGELOG.md b/packages/core/dialog/CHANGELOG.md index 50a2bd9..980e09b 100644 --- a/packages/core/dialog/CHANGELOG.md +++ b/packages/core/dialog/CHANGELOG.md @@ -1,5 +1,25 @@ # @dunky.dev/dialog +## 0.2.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + +- Updated dependencies [[`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3)]: + - @dunky.dev/controllable@0.1.1 + ## 0.2.0 ### Minor Changes diff --git a/packages/core/dialog/package.json b/packages/core/dialog/package.json index 7d84745..0b44faf 100644 --- a/packages/core/dialog/package.json +++ b/packages/core/dialog/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/dialog", - "version": "0.2.0", + "version": "0.2.1", "description": "Framework-agnostic dialog interaction, modeled as a state machine.", "license": "MIT", "repository": { diff --git a/packages/core/utils/controllable/CHANGELOG.md b/packages/core/utils/controllable/CHANGELOG.md index fec1848..0349ca9 100644 --- a/packages/core/utils/controllable/CHANGELOG.md +++ b/packages/core/utils/controllable/CHANGELOG.md @@ -1,5 +1,22 @@ # @dunky.dev/controllable +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + ## 0.1.0 ### Minor Changes diff --git a/packages/core/utils/controllable/package.json b/packages/core/utils/controllable/package.json index 7ef54dc..905b371 100644 --- a/packages/core/utils/controllable/package.json +++ b/packages/core/utils/controllable/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/controllable", - "version": "0.1.0", + "version": "0.1.1", "description": "Controlled/uncontrolled machinery for state machines: a controllable context slice and gated transitions.", "license": "MIT", "repository": { diff --git a/packages/core/utils/overlay/CHANGELOG.md b/packages/core/utils/overlay/CHANGELOG.md index 7c1944f..cf9eb74 100644 --- a/packages/core/utils/overlay/CHANGELOG.md +++ b/packages/core/utils/overlay/CHANGELOG.md @@ -1,5 +1,22 @@ # @dunky.dev/overlay +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + ## 0.1.0 ### Minor Changes diff --git a/packages/core/utils/overlay/package.json b/packages/core/utils/overlay/package.json index 14435db..4699eb2 100644 --- a/packages/core/utils/overlay/package.json +++ b/packages/core/utils/overlay/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/overlay", - "version": "0.1.0", + "version": "0.1.1", "description": "Agnostic overlay-layer stack: registration and topmost resolution, shared by every overlay primitive across substrates.", "license": "MIT", "repository": { diff --git a/packages/dom/utils/focus-trap/CHANGELOG.md b/packages/dom/utils/focus-trap/CHANGELOG.md index cc75f91..3d8e74d 100644 --- a/packages/dom/utils/focus-trap/CHANGELOG.md +++ b/packages/dom/utils/focus-trap/CHANGELOG.md @@ -1,5 +1,22 @@ # @dunky.dev/dom-focus-trap +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + ## 0.1.0 ### Minor Changes diff --git a/packages/dom/utils/focus-trap/package.json b/packages/dom/utils/focus-trap/package.json index cb85526..6205c3d 100644 --- a/packages/dom/utils/focus-trap/package.json +++ b/packages/dom/utils/focus-trap/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/dom-focus-trap", - "version": "0.1.0", + "version": "0.1.1", "description": "Framework-free Tab/Shift+Tab containment for a DOM subtree.", "license": "MIT", "repository": { diff --git a/packages/dom/utils/navigation/CHANGELOG.md b/packages/dom/utils/navigation/CHANGELOG.md index 09405d7..912c8d0 100644 --- a/packages/dom/utils/navigation/CHANGELOG.md +++ b/packages/dom/utils/navigation/CHANGELOG.md @@ -1,5 +1,22 @@ # @dunky.dev/dom-navigation +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + ## 0.1.0 ### Minor Changes diff --git a/packages/dom/utils/navigation/package.json b/packages/dom/utils/navigation/package.json index bd2bf3d..1aceae8 100644 --- a/packages/dom/utils/navigation/package.json +++ b/packages/dom/utils/navigation/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/dom-navigation", - "version": "0.1.0", + "version": "0.1.1", "description": "Framework-free browser-navigation helpers: a session-history guard so the host's Back dismisses a layer instead of leaving the page.", "license": "MIT", "repository": { diff --git a/packages/dom/utils/overlay/CHANGELOG.md b/packages/dom/utils/overlay/CHANGELOG.md index 8074c19..cdd7574 100644 --- a/packages/dom/utils/overlay/CHANGELOG.md +++ b/packages/dom/utils/overlay/CHANGELOG.md @@ -1,5 +1,42 @@ # @dunky.dev/dom-overlay +## 0.1.1 + +### Patch Changes + +- [#32](https://github.com/dunky-dev/ui/pull/32) [`548ef7c`](https://github.com/dunky-dev/ui/commit/548ef7cd6e10263e02e9d0203292d61621f17a8d) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Anchor the overlay layer stack and the scroll-lock registry on a realm-global + keyed by `Symbol.for`, so they survive the module being loaded more than once in + a single page (duplicate bundles in a monorepo or micro-frontend). + + Both were plain module-level singletons. When a bundler ships two copies of the + module — a common monorepo/micro-frontend hazard — each copy got its own stack + and its own lock registry, so their "which layer is topmost" and "is the page + still locked" decisions drifted apart: Escape or an outside press could dismiss + the wrong dialog in a nested stack, and scroll lock could double-lock or leak. + Radix hit the same class of bug with its focus-scope stack + (radix-ui/primitives#2815). + + The shared state now resolves through a well-known global symbol, so every + duplicate copy rendezvous on the same instance. It is resolved lazily on first + use, so the packages keep their `sideEffects: false` contract (no import-time + global write). No API change. + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + +- Updated dependencies [[`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3)]: + - @dunky.dev/overlay@0.1.1 + ## 0.1.0 ### Minor Changes diff --git a/packages/dom/utils/overlay/package.json b/packages/dom/utils/overlay/package.json index 15c4a2e..63c9254 100644 --- a/packages/dom/utils/overlay/package.json +++ b/packages/dom/utils/overlay/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/dom-overlay", - "version": "0.1.0", + "version": "0.1.1", "description": "Framework-free DOM behavior for overlay substrates: the shared layer stack with assistive-tech containment, the exit window, and initial focus.", "license": "MIT", "repository": { diff --git a/packages/dom/utils/scroll-lock/CHANGELOG.md b/packages/dom/utils/scroll-lock/CHANGELOG.md index aefd6ea..5fda035 100644 --- a/packages/dom/utils/scroll-lock/CHANGELOG.md +++ b/packages/dom/utils/scroll-lock/CHANGELOG.md @@ -1,5 +1,39 @@ # @dunky.dev/dom-scroll-lock +## 0.1.1 + +### Patch Changes + +- [#32](https://github.com/dunky-dev/ui/pull/32) [`548ef7c`](https://github.com/dunky-dev/ui/commit/548ef7cd6e10263e02e9d0203292d61621f17a8d) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Anchor the overlay layer stack and the scroll-lock registry on a realm-global + keyed by `Symbol.for`, so they survive the module being loaded more than once in + a single page (duplicate bundles in a monorepo or micro-frontend). + + Both were plain module-level singletons. When a bundler ships two copies of the + module — a common monorepo/micro-frontend hazard — each copy got its own stack + and its own lock registry, so their "which layer is topmost" and "is the page + still locked" decisions drifted apart: Escape or an outside press could dismiss + the wrong dialog in a nested stack, and scroll lock could double-lock or leak. + Radix hit the same class of bug with its focus-scope stack + (radix-ui/primitives#2815). + + The shared state now resolves through a well-known global symbol, so every + duplicate copy rendezvous on the same instance. It is resolved lazily on first + use, so the packages keep their `sideEffects: false` contract (no import-time + global write). No API change. + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + ## 0.1.0 ### Minor Changes diff --git a/packages/dom/utils/scroll-lock/package.json b/packages/dom/utils/scroll-lock/package.json index b3b0169..5442756 100644 --- a/packages/dom/utils/scroll-lock/package.json +++ b/packages/dom/utils/scroll-lock/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/dom-scroll-lock", - "version": "0.1.0", + "version": "0.1.1", "description": "Framework-free, reference-counted scroll lock for any scroll container.", "license": "MIT", "repository": { diff --git a/packages/react/dialog/CHANGELOG.md b/packages/react/dialog/CHANGELOG.md index b495c61..6749270 100644 --- a/packages/react/dialog/CHANGELOG.md +++ b/packages/react/dialog/CHANGELOG.md @@ -1,5 +1,29 @@ # @dunky.dev/react-dialog +## 0.2.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + +- Updated dependencies [[`548ef7c`](https://github.com/dunky-dev/ui/commit/548ef7cd6e10263e02e9d0203292d61621f17a8d), [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3)]: + - @dunky.dev/dom-overlay@0.1.1 + - @dunky.dev/dialog@0.2.1 + - @dunky.dev/dom-navigation@0.1.1 + - @dunky.dev/react-use-focus-trap@0.1.1 + - @dunky.dev/react-use-scroll-lock@0.1.1 + ## 0.2.0 ### Minor Changes diff --git a/packages/react/dialog/package.json b/packages/react/dialog/package.json index 7cc4d70..c2a78dc 100644 --- a/packages/react/dialog/package.json +++ b/packages/react/dialog/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/react-dialog", - "version": "0.2.0", + "version": "0.2.1", "description": "React binding for @dunky.dev/dialog.", "license": "MIT", "repository": { diff --git a/packages/react/hooks/use-focus-trap/CHANGELOG.md b/packages/react/hooks/use-focus-trap/CHANGELOG.md index 2a76168..884ad7b 100644 --- a/packages/react/hooks/use-focus-trap/CHANGELOG.md +++ b/packages/react/hooks/use-focus-trap/CHANGELOG.md @@ -1,5 +1,25 @@ # @dunky.dev/react-use-focus-trap +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + +- Updated dependencies [[`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3)]: + - @dunky.dev/dom-focus-trap@0.1.1 + ## 0.1.0 ### Minor Changes diff --git a/packages/react/hooks/use-focus-trap/package.json b/packages/react/hooks/use-focus-trap/package.json index 38635be..6bdee15 100644 --- a/packages/react/hooks/use-focus-trap/package.json +++ b/packages/react/hooks/use-focus-trap/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/react-use-focus-trap", - "version": "0.1.0", + "version": "0.1.1", "description": "React binding for @dunky.dev/dom-focus-trap.", "license": "MIT", "repository": { diff --git a/packages/react/hooks/use-scroll-lock/CHANGELOG.md b/packages/react/hooks/use-scroll-lock/CHANGELOG.md index 5ec0a8b..ad7dd2c 100644 --- a/packages/react/hooks/use-scroll-lock/CHANGELOG.md +++ b/packages/react/hooks/use-scroll-lock/CHANGELOG.md @@ -1,5 +1,25 @@ # @dunky.dev/react-use-scroll-lock +## 0.1.1 + +### Patch Changes + +- [#36](https://github.com/dunky-dev/ui/pull/36) [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Ship `SPEC.md` and the TypeScript sources in the published package, alongside + the built `dist`. + + The tarball used to carry `dist` and `README.md` only, so the two things you + actually want when a behavior surprises you — the spec that defines the contract + and the code that implements it — were reachable only by finding the repo and + guessing which tag matches the installed version. Both now sit in + `node_modules//`, pinned to the exact version installed. + + Nothing about resolution changes: `publishConfig` still points `main`, `types`, + and `exports` at `dist`, and the sources are inert payload — read them, don't + import them. + +- Updated dependencies [[`548ef7c`](https://github.com/dunky-dev/ui/commit/548ef7cd6e10263e02e9d0203292d61621f17a8d), [`827c079`](https://github.com/dunky-dev/ui/commit/827c079716e6dcb5d78e9341285627137cf0ade3)]: + - @dunky.dev/dom-scroll-lock@0.1.1 + ## 0.1.0 ### Minor Changes diff --git a/packages/react/hooks/use-scroll-lock/package.json b/packages/react/hooks/use-scroll-lock/package.json index 23b9db4..e3983b1 100644 --- a/packages/react/hooks/use-scroll-lock/package.json +++ b/packages/react/hooks/use-scroll-lock/package.json @@ -1,6 +1,6 @@ { "name": "@dunky.dev/react-use-scroll-lock", - "version": "0.1.0", + "version": "0.1.1", "description": "React binding for @dunky.dev/dom-scroll-lock.", "license": "MIT", "repository": {