Skip to content

v1.10.1

Choose a tag to compare

@JackUait JackUait released this 19 Aug 22:53
· 862 commits to main since this release

Features

  • Toggle heading adoption — "Turn into → Toggle heading" now adopts the heading's section, matching Notion.
    • Every sibling up to the next heading of equal or higher rank becomes a child of the new toggle.
    • A heading inside a column adopts only within that column.
    • The adoption runs inside a move transaction, so undo restores the section.
  • Toggle disclosure arrows — The arrows now read as clickable.
    • The hover pill used to appear only once the pointer was already inside the 28 px square.
    • The chevron scales with its title's font size, so heading arrows grow with their level.
    • A localized Expand or Collapse tooltip is read from the state-synced aria-label.

Bug Fixes

  • Nested block menus — A block inside a toggle could never show its own menu.
    • A nested table's menu also jumped away the moment the pointer crossed onto the cell padding.
    • Hover and touch now share one resolver where the deepest block under the pointer owns the toolbar.
    • Hover detection stands down entirely over the toolbar.
  • Accessible names for icon-only controls — The entire inline toolbar was nameless to a screen reader.
    • A hint wired via aria-describedby describes a control but never names it.
    • An icon-only popover item now takes its name from its hint title, which repairs every one of them.
    • Colour swatches, captions and the embed iframe are named too, with no new i18n keys.
  • List and popover semantics — Every list item in the editor was an orphan.
    • Items declared role="listitem" but nothing declared the list, so the wrapper now carries role="list".
    • Toolbox section headers were separators inside a listbox, and are now presentational.
    • A popover is stamped as a menu only when it actually has menu items.
  • Table and database semantics — Add-row, add-column and the row and column grips were pointer-only.
    • They are now named, focusable buttons with keyboard activation.
    • Heading cells expose columnheader and rowheader, matching the <th> the view renderer emits.
    • The header toggle is a real role="switch", and database view tabs are a real tablist.
  • Escape no longer strands focus — Escape pressed inside the toolbar left focus on <body>.
    • The document handler stopped propagation in the capture phase, so the caret could never be restored.
    • It now stands down for targets inside the toolbar.
    • Modal dialogs return focus to the element that opened them, which fixes focus loss on WebKit.
  • Contrast — The grey text token cleared AA by 0.05 on white, so it failed on every tinted surface.
    • It is darkened, along with links and embed text, and inline code becomes its own token.
    • The Prism dark palette was dead: every rule was gated on a class nothing in Blok sets.
    • Database column pills move onto a dedicated on-pill colour.

Maintenance

  • Accessibility suite — Two copy-pasted axe scans became a layered suite on Chromium, Firefox and WebKit.
    • It scans all 20 block tools in edit and read-only, plus the editor chrome.
    • No rule is waived, and every scan is preceded by a visibility assertion.
    • Two defects stay pinned with reasons, including the inline toolbar stranding focus.