v0.6.0
What's Changed
Added
- Lazy, full-history search. Search now covers the entire stored history (up to
max-history) instead of an arbitrary 500-result cap, and renders a page at a time as you scroll instead of building every match at once. Results are snapshotted once and paged from memory, so scrolling never re-queries.
Fixed
- Non-PNG/JPEG images were silently dropped. GIF, WebP, BMP, TIFF and ICO are now decoded and stored (the daemon previously only had PNG/JPEG decoders). AVIF and SVG are no longer accepted, rather than accepted-then-dropped.
- Search no longer blinks (paints an empty list) between keystrokes — the first page renders in the same frame as the clear.
- Search render races fixed: a fast new query can no longer be blocked by a superseded render, render a previous query's stale results, or leave a pruned item behind as a phantom row on scroll.
ItemAddedpreview length now matches the history/search queries (200 chars), so a just-copied row and the same row after a reload show identical text.- Deterministic ordering for items sharing a millisecond timestamp (
created_at DESC, rowid DESC), so pruning can't evict the wrong one. - Lowering max history now prunes stored items immediately instead of waiting for the next copy.
- Extension lifecycle leaks closed: the
excluded-appssettings handler and the daemon force-kill timer are released on disable; the exclusion-path delete is null-guarded. - The daemon requests its bus name with
AllowReplacementfor a clean hand-off on reload; the Wayland monitor clears stale offers on clipboard clear.
Changed
- Image rows show a generic "Image" label instead of singling out PNG.
See CHANGELOG.md for full details.