photocraft/crates
Brandon Thomas 65bc1645b8 fix(ui): read the OS clipboard only on an explicit paste
Follow-up to #102. Drop the 4 Hz background mirroring of the OS clipboard
in logic(): reading the whole system clipboard (possibly a large image)
without user action is a privacy problem (macOS warns about it) and wastes
CPU. Edit > Paste / Paste in Place are now enabled when the session
clipboard has content or an OS clipboard service exists (no read); the menu,
shortcut, palette and control paths import the OS image once, on the paste
itself, and keep #102's centring of external images. An empty or non-image
clipboard makes Paste a no-op with a status message instead of an error.

Tests: external_clipboard_enables_and_centres_paste adapted (enabled without
a read, exactly one read per paste, centred), plus an empty-clipboard no-op
test and idle_frames_never_read_the_os_clipboard (20 full app frames, zero
reads).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 01:03:08 -04:00
..
algo Select › Color Range: the dialog, Select presets, eyedroppers, Localized Color Clusters, Invert (#80) 2026-10-04 17:10:43 -04:00
automation security: bound automation previews and reply resources (#93) 2026-10-05 01:02:40 -04:00
cms Never crash: cms is panic-free (Rule 9) (#36) 2026-10-04 13:25:31 -04:00
codecs Large images: adapter texture limits, banded compositing/export, proxy thumbnails, history byte budget (#71) 2026-10-04 16:45:17 -04:00
color Colour-managed canvas: document profile -> monitor (P3/Adobe RGB/ProPhoto/Gray/CMYK), linear EXR, embedded CMYK (#66) 2026-10-04 15:44:13 -04:00
compose perf(compose): share bounded pattern preparation across tiles (#104) 2026-10-05 01:01:23 -04:00
doc Image › Adjustments overhaul: full params, one editor per kind, live-preview dialogs, Curves point deletion (#68) 2026-10-04 16:08:40 -04:00
engine fix(ui): shape tools show the shape while dragging (#87) 2026-10-05 01:02:28 -04:00
format Image › Adjustments overhaul: full params, one editor per kind, live-preview dialogs, Curves point deletion (#68) 2026-10-04 16:08:40 -04:00
geom Never crash: text, color, doc, paint, geom, raster, compose, vector (#39) 2026-10-04 13:25:44 -04:00
gpu fix(compose): mix group coverage in premultiplied space (#108) 2026-10-05 01:00:31 -04:00
io fix(io): detect merged PSD alpha at the stored sample precision (#111) 2026-10-05 01:00:57 -04:00
ops Large images: adapter texture limits, banded compositing/export, proxy thumbnails, history byte budget (#71) 2026-10-04 16:45:17 -04:00
paint Painting: right-click opens the brush picker (or erases), real Smoothing, eraser-on-Background tests (#86) 2026-10-04 23:31:17 -04:00
plugins Sandboxed WebAssembly plug-ins: photocraft-plugins (wasmi), plugin.* commands, Filter › Plug-ins (#67) 2026-10-04 16:08:28 -04:00
psd Photoshop brushes: .abr import, stylus pressure/tilt, 36 grouped presets, .grd import (#74) 2026-10-04 16:26:16 -04:00
raster Never crash: text, color, doc, paint, geom, raster, compose, vector (#39) 2026-10-04 13:25:44 -04:00
raw raw: Sony cRAW, Panasonic RW2 (RawFormat 5), uncompressed ORF + ORF previews; NEF blocked (clean-room) (#83) 2026-10-04 23:30:41 -04:00
testkit one-shot 2026-09-30 05:02:08 -04:00
text Japanese support: IME input in the Type tool and CJK glyphs in the UI (#101) 2026-10-05 01:02:52 -04:00
ui-egui fix(ui): read the OS clipboard only on an explicit paste 2026-10-05 01:03:08 -04:00
vector perf(compose): reuse compiled vector masks within each render (#112) 2026-10-05 01:01:10 -04:00