Skip to content

foldkit@0.112.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 04:17
· 72 commits to main since this release
Immutable release. Only release title and notes can be modified.
9a35e6d

Minor Changes

  • 34c4025: Add a closeButton bundle to the Ui.Dialog render info. Spread it onto an in-panel
    dismiss control such as a Cancel or close button to close the dialog without
    wiring up a parent message. It carries the same OnClick close handler as the
    backdrop, including the suppression that keeps a click from interrupting a leave
    animation.

  • a481ddb: Split UI components and the in-browser DevTools overlay out of core.

    The 24 UI components move from foldkit/ui/* to the new @foldkit/ui package, and the DevTools overlay moves to the new @foldkit/devtools package. Breaking changes in either no longer force a core version bump.

    Migration:

    • Component usage moves to named imports from the new package: import { Ui } from 'foldkit' with Ui.Button.view(...) becomes import { Button } from '@foldkit/ui' with Button.view(...). The foldkit/ui/button subpath becomes @foldkit/ui/button. Add @foldkit/ui to your dependencies. When a component name collides with another import (for example core's Calendar), alias it: import { Calendar as UiCalendar } from '@foldkit/ui'.

    • The DevTools overlay is now opt-in. devTools: true (or a devTools config object) still records history and serves the WebSocket bridge for the DevTools MCP server, but no longer mounts the in-browser panel on its own. To show the panel, install @foldkit/devtools and pass its overlay factory:

      import { overlay } from '@foldkit/devtools'
      
      Runtime.makeApplication({
        // ...
        devTools: { Message, overlay },
      })

    New public surface on core to support the split: the foldkit/submodel subpath, foldkit/devtools-host (the instrumentation API the overlay builds on), and DevToolsOverlay / DevToolsPosition from foldkit/runtime.

Patch Changes

  • 34c4025: Dialog now returns focus when it closes. Opening a dialog records the element
    that had focus, and closing it restores focus there, so dismissing a dialog
    returns to its trigger and closing a stacked dialog returns to the one beneath
    it. The component opens with show() rather than showModal(), so it does this
    restoration itself rather than relying on the browser.
  • 34c4025: Fix Escape and Tab handling when more than one Dialog is open at once. Only
    the topmost dialog now responds, so Escape closes stacked dialogs from the top
    down and focus stays trapped in the frontmost dialog.