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-langoverrides 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 markbodychildreninertbehind 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:readyevent ondocument. It fires during mount, beforewindow.shakufexists, so the widget arrives inevent.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
A11yWidgetclass,show()used to open the panel.open()now opens the panel andshow()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.
-
NOTICEshipped 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.