Changelog

Every released version and what actually changed in it. Breaking changes are called out explicitly.

Published to npm as @shakuf-widget/widget. Installing with an explicit version pins it; without one you get the latest.

The rest of this site is in Hebrew. This page is in English because it is written for the people installing the package.

0.2.0 · 13 August 2026

Added

  • English. The widget reads the page language from <html lang> and renders accordingly, including direction. data-lang overrides it. Hebrew remains the default, so existing installs are unchanged.
  • Language changes are followed without a reload. Apps that switch language at runtime switch the widget too, including the screen-reader announcement region — a live region left tagged with the wrong language is read aloud in the wrong voice.
  • data-mount — a CSS selector for the element to mount into, instead of <body>. Required for apps that mark body children inert behind a full-screen blocker, which would otherwise disable the widget at exactly the moment a visitor is stuck looking at one.
  • window.shakuf — host-page control: open, close, toggle, hide, show, hidden, reset, setLanguage, lang, destroy.
  • data-hidden — start with the launcher hidden, for hosts that already know the visitor turned it off. Avoids painting the button and then removing it on every load.
  • shakuf:ready event on document. It fires during mount, before window.shakuf exists, so the widget arrives in event.detail.

Fixed

  • One failing feature disabled the rest. The apply calls were unguarded, so a single throw ended the loop. On load that meant the visitor's other saved preferences silently never applied; on a click it meant the save and the panel refresh never ran, leaving the control looking dead. Each feature is now isolated.
  • A failed change was announced as a success. The panel announced the new state immediately after requesting it, whether or not it had taken effect — telling the one person who cannot see the screen that something happened when it had not. Announcements now describe what actually occurred, and a failure says so.
  • Direction was hardcoded. The widget's own stylesheet fixed writing direction to RTL, and the toggle knob slid the wrong way in English.

Breaking

  • On the A11yWidget class, show() used to open the panel. open() now opens the panel and show() shows the launcher, matching the global API. Only affects consumers using the class directly via npm.
  • The size budget rose from 15 KB to 17 KB gzipped. The bundle ships both languages, so a Hebrew-only install carries the English strings — the cost of keeping one script tag with no language in the URL.

0.1.1 · 12 August 2026

Documentation only. The bundle is identical to 0.1.0.

  • NOTICE shipped with an unfilled copyright line, so a redistributor could not have complied with section 4(d) of the licence even if they wanted to.
  • The disclaimer cited licence section 9 for the limitation of liability. Section 9 is Accepting Warranty or Additional Liability; the limitation is section 8.
  • A broken link to SECURITY.md, which is not part of the package and so returned 404 for anyone reading the published copy.

0.1.0 · 12 August 2026

First release. Hebrew only.

  • Display-preference panel: text size, line/letter/word spacing, readable font, unjustify, contrast, saturation, link highlighting, hide images, stop animations, focus highlighting, large cursor and a reading ruler.
  • Navigation lists for headings, landmarks and links — rendered in the widget's own panel, never by modifying the host page.
  • Every change is visitor-initiated, reversible in one click, and stored only in the browser's localStorage. No server, no account, no data collection.
  • Shadow DOM with full containment, so the widget cannot leak into the host page or be broken by it.