Skip to content

TermDOM 0.1.2

Choose a tag to compare

@brainkim brainkim released this 14 Aug 05:28
· 254 commits to main since this release

63 commits since 0.1.1.

New

  • dialog.showModal(): the top layer, ::backdrop, :modal, focus containment, and Escape firing cancel. Modal dialogs paint over the page and block interaction behind them. (#32)
  • The Popover API: popover attribute states, showPopover()/hidePopover()/togglePopover(), popovertarget invokers, beforetoggle/toggle events, light dismiss, stacking, and :popover-open. (#38)
  • border-radius: the shorthand and all four longhands, including slash syntax. A corner with a nonzero radius renders with the rounded box-drawing glyph. (#31)
  • CSS logical properties: the margin/padding/inset/border block and inline families, block-size/inline-size with min/max variants, and text-align: start/end, resolved against direction by cascade order. (#33)
  • beforeunload: window.close() and Ctrl-C dispatch a cancelable BeforeUnloadEvent, so an app can ask before quitting. (#29)
  • <kbd> renders as a bold bracketed keycap. (#28)
  • Terminal width measurement: where a terminal doesn't negotiate mode 2027, the engine measures ambiguous glyph advances (VS16 emoji, East Asian Ambiguous, Arabic presentation forms) with in-frame cursor queries and corrects itself, fixing emoji misalignment in Terminal.app. (#37)
  • window.scrollX and pageXOffset read 0.

Fixed

  • Preserved spaces no longer collapse at inline element boundaries under white-space: pre. (#36)
  • Attribute values containing selector metacharacters parse correctly — thanks @yowainwright for the first outside contribution. (#39)
  • text-align: end maps to the left edge under direction: rtl.
  • Absolutely positioned boxes with both insets and margin: auto center per CSS 2.1 instead of stretching.
  • Enter activates checkboxes, as Space does.
  • The engine no longer uses Buffer; browser bundles need no polyfill, and ProcessLike accepts Uint8Array/ArrayBuffer chunks.

Examples

  • weather.ts: an Open-Meteo forecast with hourly charts drawn in eighth-blocks.
  • popover.ts: a menu bar where every menu is a declarative popover.

Docs

  • The README explains how the engine works; COMPATIBILITY.md classifies every CSS property as measured, not applicable to a character grid, or not yet implemented; the conformance docs are regenerated (94,816 DOM subtests passing, 3,124 CSSOM).