chore(release): version packages - #28
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 19, 2026 17:01
8a18147 to
c2c6505
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@dunky.dev/dialog@0.2.0
Minor Changes
#27
f0d5ca4Thanks @ivanbanov! - AddcloseOnBack— the host's Back navigation closes the open dialog insteadof leaving the page, the pattern mobile users expect from a full-screen
overlay. Off by default.
It follows the shared dismissal contract:
onBackNavigationfires first andpreventDefault()vetoes, a controlled dialog only records the intent (closeit from your own state as usual), a nested stack unwinds one layer per Back
press, and it composes with
animated(Back plays the exit animation). Thedecision — gate, veto, controlled — lives once in the core's
backNavigate;substrates only wire their host's mechanics to it.
The web mechanics ship as their own framework-free util,
@dunky.dev/dom-navigation(interceptBackNavigation) — a sessionhistory guard any overlaid layer can use, not just the dialog: opening
plants a guard entry in the session history and Back consumes it. A dialog
closed any other way consumes its own entry too, so no leftover ever swallows
a later Back press — including across reopen races (React StrictMode's
double-invoked effects adopt the entry in place rather than queueing a
history traversal, which browsers don't reliably deliver once another entry
is pushed).
#26
f4628e7Thanks @ivanbanov! - Add exit-animation support via a newanimatedoption. An animated dialogcloses through a
closingstate — every part carries it asdata-state="closing", the styling hook for the exit — and unmounts when itstransition or animation on Content ends (with a fallback ceiling, and skipped
entirely under
prefers-reduced-motion).The exit window lives in the core machine, not in per-substrate unmount
deferral, so reopening mid-exit is a named transition instead of a timing
race, and every substrate inherits identical behavior. The exit is cosmetic
by design: the close is reported, focus returns, and the page becomes
interactive the moment closing starts — the still-painting layer is made
inertuntil it leaves. Enter animations need no option: parts mountstraight into
data-state="open", so CSS animations (or transitions via@starting-style) play from mount. Default (animated: false) behavior isunchanged.
@dunky.dev/overlay@0.1.0
Minor Changes
#29
89ed3f7Thanks @ivanbanov! - Add@dunky.dev/overlayand@dunky.dev/dom-overlay— the shared overlaycoordination the whole overlay family (dialog, drawer, alert-dialog, popover,
menu, combobox) builds on, so the behavior is implemented once instead of
forked per primitive.
@dunky.dev/overlayis the agnostic half: a stack of open layers and therule for which is topmost (deepest nesting, open order breaking ties). No
DOM, no framework — a future native substrate reuses it.
@dunky.dev/dom-overlayis the DOM realization on top of it: the layerstack wired to assistive-tech containment (
aria-hidden+inert), theexit window (
hideExitingLayer/watchExitAnimation), and initial focus(
getInitialFocus).This replaces
@dunky.dev/dom-dialog, which is removed — its behavior wasnever dialog-specific, only its name was.
@dunky.dev/react-dialognowconsumes
@dunky.dev/dom-overlay; its public API and behavior are unchanged(
registerDialog/isTopmostDialogbecomeregisterLayer/isTopmostLayerinternally).@dunky.dev/dom-navigation@0.1.0
Minor Changes
#27
f0d5ca4Thanks @ivanbanov! - AddcloseOnBack— the host's Back navigation closes the open dialog insteadof leaving the page, the pattern mobile users expect from a full-screen
overlay. Off by default.
It follows the shared dismissal contract:
onBackNavigationfires first andpreventDefault()vetoes, a controlled dialog only records the intent (closeit from your own state as usual), a nested stack unwinds one layer per Back
press, and it composes with
animated(Back plays the exit animation). Thedecision — gate, veto, controlled — lives once in the core's
backNavigate;substrates only wire their host's mechanics to it.
The web mechanics ship as their own framework-free util,
@dunky.dev/dom-navigation(interceptBackNavigation) — a sessionhistory guard any overlaid layer can use, not just the dialog: opening
plants a guard entry in the session history and Back consumes it. A dialog
closed any other way consumes its own entry too, so no leftover ever swallows
a later Back press — including across reopen races (React StrictMode's
double-invoked effects adopt the entry in place rather than queueing a
history traversal, which browsers don't reliably deliver once another entry
is pushed).
@dunky.dev/dom-overlay@0.1.0
Minor Changes
#26
f4628e7Thanks @ivanbanov! - Add exit-animation support via a newanimatedoption. An animated dialogcloses through a
closingstate — every part carries it asdata-state="closing", the styling hook for the exit — and unmounts when itstransition or animation on Content ends (with a fallback ceiling, and skipped
entirely under
prefers-reduced-motion).The exit window lives in the core machine, not in per-substrate unmount
deferral, so reopening mid-exit is a named transition instead of a timing
race, and every substrate inherits identical behavior. The exit is cosmetic
by design: the close is reported, focus returns, and the page becomes
interactive the moment closing starts — the still-painting layer is made
inertuntil it leaves. Enter animations need no option: parts mountstraight into
data-state="open", so CSS animations (or transitions via@starting-style) play from mount. Default (animated: false) behavior isunchanged.
#29
89ed3f7Thanks @ivanbanov! - Add@dunky.dev/overlayand@dunky.dev/dom-overlay— the shared overlaycoordination the whole overlay family (dialog, drawer, alert-dialog, popover,
menu, combobox) builds on, so the behavior is implemented once instead of
forked per primitive.
@dunky.dev/overlayis the agnostic half: a stack of open layers and therule for which is topmost (deepest nesting, open order breaking ties). No
DOM, no framework — a future native substrate reuses it.
@dunky.dev/dom-overlayis the DOM realization on top of it: the layerstack wired to assistive-tech containment (
aria-hidden+inert), theexit window (
hideExitingLayer/watchExitAnimation), and initial focus(
getInitialFocus).This replaces
@dunky.dev/dom-dialog, which is removed — its behavior wasnever dialog-specific, only its name was.
@dunky.dev/react-dialognowconsumes
@dunky.dev/dom-overlay; its public API and behavior are unchanged(
registerDialog/isTopmostDialogbecomeregisterLayer/isTopmostLayerinternally).Patch Changes
89ed3f7]:@dunky.dev/react-dialog@0.2.0
Minor Changes
#27
f0d5ca4Thanks @ivanbanov! - AddcloseOnBack— the host's Back navigation closes the open dialog insteadof leaving the page, the pattern mobile users expect from a full-screen
overlay. Off by default.
It follows the shared dismissal contract:
onBackNavigationfires first andpreventDefault()vetoes, a controlled dialog only records the intent (closeit from your own state as usual), a nested stack unwinds one layer per Back
press, and it composes with
animated(Back plays the exit animation). Thedecision — gate, veto, controlled — lives once in the core's
backNavigate;substrates only wire their host's mechanics to it.
The web mechanics ship as their own framework-free util,
@dunky.dev/dom-navigation(interceptBackNavigation) — a sessionhistory guard any overlaid layer can use, not just the dialog: opening
plants a guard entry in the session history and Back consumes it. A dialog
closed any other way consumes its own entry too, so no leftover ever swallows
a later Back press — including across reopen races (React StrictMode's
double-invoked effects adopt the entry in place rather than queueing a
history traversal, which browsers don't reliably deliver once another entry
is pushed).
#26
f4628e7Thanks @ivanbanov! - Add exit-animation support via a newanimatedoption. An animated dialogcloses through a
closingstate — every part carries it asdata-state="closing", the styling hook for the exit — and unmounts when itstransition or animation on Content ends (with a fallback ceiling, and skipped
entirely under
prefers-reduced-motion).The exit window lives in the core machine, not in per-substrate unmount
deferral, so reopening mid-exit is a named transition instead of a timing
race, and every substrate inherits identical behavior. The exit is cosmetic
by design: the close is reported, focus returns, and the page becomes
interactive the moment closing starts — the still-painting layer is made
inertuntil it leaves. Enter animations need no option: parts mountstraight into
data-state="open", so CSS animations (or transitions via@starting-style) play from mount. Default (animated: false) behavior isunchanged.
Patch Changes
#26
0e259c6Thanks @ivanbanov! - A modal dialog no longer marks its own backdroparia-hidden+inert. Theassistive-tech containment walks up from the dialog window and hides every
sibling along the way — and the backdrop is portalled alongside the viewport,
outside the window's subtree yet part of the same layer, so the topmost
dialog was hiding its own backdrop.
inertblocks pointer hit-testing, sopressing the backdrop to dismiss silently did nothing in a real browser
(test-runner
.click()bypasses hit-testing, which is why suites nevercaught it). A dialog's layer now excepts its own backdrop from the
containment; everything beneath the topmost layer — lower dialogs' backdrops
included — stays hidden and inert as before.
#29
89ed3f7Thanks @ivanbanov! - Add@dunky.dev/overlayand@dunky.dev/dom-overlay— the shared overlaycoordination the whole overlay family (dialog, drawer, alert-dialog, popover,
menu, combobox) builds on, so the behavior is implemented once instead of
forked per primitive.
@dunky.dev/overlayis the agnostic half: a stack of open layers and therule for which is topmost (deepest nesting, open order breaking ties). No
DOM, no framework — a future native substrate reuses it.
@dunky.dev/dom-overlayis the DOM realization on top of it: the layerstack wired to assistive-tech containment (
aria-hidden+inert), theexit window (
hideExitingLayer/watchExitAnimation), and initial focus(
getInitialFocus).This replaces
@dunky.dev/dom-dialog, which is removed — its behavior wasnever dialog-specific, only its name was.
@dunky.dev/react-dialognowconsumes
@dunky.dev/dom-overlay; its public API and behavior are unchanged(
registerDialog/isTopmostDialogbecomeregisterLayer/isTopmostLayerinternally).Updated dependencies [
f0d5ca4,f4628e7,89ed3f7]: