mirror of
https://github.com/aphrody-labs/wordcraft.git
synced 2026-10-14 03:29:04 +00:00
* Options: Animation effects setting that follows the system The app eased wheel scrolling, Ctrl+wheel zoom and its fades whatever the system's animation setting was: with Windows' Animation effects off, the page still smooth-scrolled. File > Options > Accessibility > Animation effects: Use system setting (the default), On or Off; `ui.animations` for agents; kept in ui.json. - Off: a wheel notch scrolls the page its whole distance at once, egui's own scroll areas get the notch whole instead of eased in, Ctrl+wheel zoom steps at once, and egui's fades and scroll-to glides are off. Touchpad momentum and the caret blink are unchanged. - Use system setting asks the host (`Services::animations_enabled`) at start-up and when the window regains focus. Windows: the Windows Runtime's UISettings, a safe API of the `windows` crate already in the build. Web: `prefers-reduced-motion`. macOS and Linux/BSD aren't read yet (docs/gaps.md); there it means on. - The eight new strings are in all eleven interface catalogs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Animation effects off: zoom steps land finished in one frame Follow-up to the Animation effects setting: zooming could still look animated with the setting off. - Ctrl+wheel zooms in whole steps, each at once. A mouse-wheel notch is two steps in its frame, the same zoom as before. Turns that arrive in small pieces (a touchpad pinch that Windows reports as Ctrl+wheel, a high-resolution or free-spinning wheel) add up to a step of about 10% first, where each piece used to zoom a little and the zoom glided. - A page re-rendered for a zoom step is drawn on the pixel grid in that frame. It used to be drawn off the grid, slightly soft, and snap sharp a frame later. - The frame a zoom changes in asks for the next one at once, so the status bar's percentage and slider follow in the next frame. They could lag until the caret's next blink, up to half a second. The last two apply whatever the setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Animation effects: follow the system's setting on macOS, Linux and the BSDs "Use system setting" only read Windows and the browser; elsewhere it meant on. - macOS: System Settings > Accessibility > Display > Reduce motion, through NSWorkspace (a safe call in objc2-app-kit 0.3, already in the build). - Linux and the BSDs: the XDG settings portal over D-Bus (zbus, already in the build through AccessKit). Three settings say whether animations play, and any one saying no turns them off: the cross-desktop reduced-motion preference, GNOME's enable-animations and KDE Plasma's animation speed. A thread reads them at start-up and follows the portal's change signal. Where no portal answers, or it knows none of them, KDE's kdeglobals and GTK's settings.ini are read instead. - The UI now asks the host every frame instead of at start-up and on focus, so a change in the system's settings is followed while the app runs. Hosts answer from memory: Windows and macOS are asked again at most once a second, the web keeps its media query, and Linux/BSD is kept current by its thread. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Animation setting on Linux: ask every setting again when one changes KDE's portal announces a new animation speed only as the cross-desktop reduced-motion preference, not under its own kdeglobals name. Keeping each setting's last announced value left KDE's own one stale: after going from instant back to normal speed, animations stayed off. Every setting is now read afresh on any relevant change, and the settings files' answer stands whenever the portal has none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Caret glide follows Animation effects; its canvas test turns the setting off, then on --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>