Files
Claude 16cf170dc5 fix(desktop): audit fixes for image decoding and X11 scaling
Scaling (DesktopUiScale):
- GNOME's Xft.dpi carries its Large Text factor (it has no fractional
  scale on X11), so there the excess goes to Compose's fontScale, not
  density: Large Text no longer zooms the whole app.
- The X resources are read from main() before AWT starts. AWT doesn't
  call XInitThreads, so a second Xlib connection opened later on the EDT
  could race its toolkit thread.
- The XSETTINGS DPI gets the same plausibility check as the X resources
  one; AMETHYST_SCALE can now shrink as well as grow.
- The Wayland crash dialog goes through ProvideDesktopUiScale too, and
  one helper reads AWT's scale.

Decoding:
- A JPEG much larger than its slot decodes at 1/2, 1/4 or 1/8 of its size
  in libjpeg before the mipmap filter, applying its EXIF orientation:
  a 6000x4000 photo for a feed card takes 50 ms instead of 220 ms,
  through a 1.5 MB bitmap instead of 96 MB.
- The GIF decoder closes its native Codec and Data, and skips two frame
  copies (returns the frame as is when it fits; shares its pixels when
  shrinking).

nestsClient takes JNA from the version catalog, like desktopApp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YFyERkpgRiWgXWyc5Jg7Xa
2026-10-14 19:10:53 +00:00
..