Skip to content

TermDOM 0.1.8

Choose a tag to compare

@brainkim brainkim released this 22 Sep 23:12
· 879 commits to main since this release

Added

  • contenteditable. An element with contenteditable, or the body under document.designMode, is an editing host: it takes the caret, the arrows move it, and typing, pasting, Backspace, Delete and Enter edit its text as in a browser. Tested against CodeMirror 6.
  • position: sticky. A sticky box holds its inset against the nearest scroll container, or the viewport, and stays within the box it flows in.
  • Negative insets. top, right, bottom and left accept negative lengths.
  • MathML. Presentation MathML renders on the cell grid: fractions over a bar, radicals under one, sums and integrals with their limits, stretched fences, scripts, tables and matrices, spaced as TeX spaces them. Inline math linearizes onto one row. --math-glyphs: ascii | box-drawing chooses the drawing pieces, and the text inside a formula is selectable.
  • Scroll events. scroll fires on a scrolled element and on the document, and events bubble past the document to the window.
  • FormData. new FormData(form) reads a form's entries, the form fires formdata, and a FormData is accepted wherever fetch takes one.
  • Links paint in LinkText, underlined.
  • Click details. Mouse events carry the click count in detail, and dblclick fires.
  • Tabs. A preserved tab expands to its tab stop under tab-size.
  • Modern color syntax. rgb() and hsl() accept the space-separated forms with a slash before the alpha.
  • document.fonts is a font face set that is already loaded.

Changed

  • Frame callbacks run before the frame paints, so a layout read in requestAnimationFrame sees the frame about to draw.
  • The wheel at the top of a document. A document taller than the screen stops at its top. One that fits hands the wheel to the terminal's scrollback and takes it back on the next keystroke.
  • Focus shows as the cursor in a text field and as an outline elsewhere.
  • KeyboardEvent.code is set for ASCII letters, digits and US-layout punctuation, and empty otherwise.
  • A MediaQueryList is retained only while it has a listener.

Fixed

  • A fixed box inside a scrolled container scrolled with it instead of staying on the viewport, and an absolute box scrolled with a container outside its containing block.
  • In fullscreen, mouse rows were offset by the row the command started on, so clicks and the wheel missed above it.
  • A select's picker was as wide as its field, so a grouped option ran past the border.
  • A focused inline that wrapped was outlined across the whole width of its lines.
  • Mouse capture was lost under tmux after motion reporting was turned off.
  • The cursor was visible while the document scrolled earlier output away to grow.
  • The children of a display: contents element were not items of the flex box around it.
  • The arrows were not recognized in application cursor mode.
  • A <br> had no rect.
  • A custom element's observedAttributes returning a string was accepted.
  • document.title on an SVG document did not read its root's title.
  • Restyling reached more of the document than a mutation could touch, and painting walked the DOM rather than the layout tree; both are faster.
  • A Canvas box painted black rather than the terminal's background.

These release notes were generated by Claude Code.