Commit graph

12 commits

Author SHA1 Message Date
b6fe86f418 chore: bump versions to 0.10.0 2026-06-25 20:37:56 -05:00
7b3a25eaaf chore: bump versions to 0.9.0 2026-06-25 18:36:33 -05:00
d861bbac4d chore: bump versions to 0.8.0
Cut the 0.8.0 release (dependency upgrades + single-instance and
error-handling hardening): daemon Cargo.toml/Cargo.lock to 0.8.0, extension
metadata.json version to 8, and add the [0.8.0] CHANGELOG entry.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 21:34:41 -05:00
aa56cac958 deps+fix: upgrade zbus 5 / rusqlite 0.40 / dirs 6; daemon hardening
Dependency major upgrades (zbus 4->5, rusqlite 0.31->0.40, dirs 5->6) and the
migration + hardening that came with the review:

- zbus 5: SignalContext -> SignalEmitter, signal_context() -> signal_emitter().
- Single-instance D-Bus name: request with DoNotQueue instead of
  ReplaceExisting|AllowReplacement. If the name is already owned the daemon now
  exits instead of running without owning it (zbus 5 returns InQueue as Ok) or
  stealing the name and orphaning the running instance (zbus does not terminate
  a replaced owner). The extension already skips spawning when the name is
  owned, so replacement was never needed.
- Stop swallowing real SQLite errors: upsert_item's dedup SELECT and
  get_thumbnail/get_raw_item now use .optional().context()? so a missing row is
  Ok(None) and a genuine error propagates instead of masquerading as not-found.
- clippy pedantic/nursery cleanup: uninlined format args, redundant mime clone,
  pass ObjectId/Connection by reference where not consumed, match->if/is_ok,
  doc backticks; #[allow] with rationale for the intentional lints
  (significant_drop_tightening on the single-writer lock, unused_async on zbus
  interface methods).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 21:32:56 -05:00
ffa1a407fe chore: bump versions to 0.7.0
Cut the 0.7.0 release (D-Bus rename + theme-recursion fix): daemon
Cargo.toml to 0.7.0, refresh Cargo.lock (gif/half/log patch bumps + version),
extension metadata.json version to 7, and add the [0.7.0] CHANGELOG entry.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 19:20:18 -05:00
3f32c19fd0 chore: bump versions to 0.6.0
Cut the 0.6.0 release (lazy full-history search + image-format and audit
fixes): daemon Cargo.toml/Cargo.lock to 0.6.0, extension metadata.json
version to 6, and add the [0.6.0] CHANGELOG entry.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 17:30:59 -05:00
e7b0392d92 fix: daemon image decoding, preview alignment, ordering and lifecycle
Audit fixes for the daemon:

- Decode gif/webp/bmp/tiff/ico (enable the pure-Rust image features). These
  mimes were accepted by pick_mime but the image crate only had png/jpeg, so
  thumbnail decode failed and the item was silently dropped. Drop avif (needs
  heavy C deps) and svg (not a raster format the image crate decodes) from the
  allowlist so unsupported types are never selected.
- ItemAdded signal preview now uses db::PREVIEW_CHARS (200), matching the
  history/search queries, so a just-copied row and the same row after a reload
  carry identical text.
- Add a deterministic ", rowid DESC" tiebreaker to the three created_at DESC
  orderings (history, search, prune) so items sharing a millisecond have a
  stable order and prune can't evict the wrong one at the boundary.
- SetConfig now prunes immediately (and emits ItemDeleted) when max_history is
  lowered, instead of waiting for the next copy.
- Request the bus name with AllowReplacement (plus ReplaceExisting) so a
  reload's new instance can cleanly take the name; fix the misleading comment.
- Wayland monitor clears its pending-offers map on Selection{None} so it can't
  grow across copy-then-clear cycles (wlroots path).
- Document that SubmitItem is a trusted-caller method (the password-manager
  hint is enforced client-side; forwarding it is a future contract change).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 17:29:29 -05:00
764911b32d chore: bump versions to 0.5.0
Cut the 0.5.0 release (light/dark theme support): daemon
Cargo.toml/Cargo.lock to 0.5.0 (no code change, kept in lockstep with the
tag), extension metadata.json version to 5, and promote the CHANGELOG
[Unreleased] entry to [0.5.0] - 2026-05-26.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 14:50:08 -05:00
42230470fc chore: bump versions to 0.4.0
Cut the 0.4.0 release: daemon Cargo.toml/Cargo.lock to 0.4.0, extension
metadata.json version to 4, and promote the CHANGELOG [Unreleased] entry
to [0.4.0] - 2026-05-26.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 13:08:55 -05:00
ab230856a4 chore: bump versions to 0.3.0
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 04:06:05 -05:00
f9826c63a8 perf: return raw bytes from GetItemContent instead of base64
The D-Bus interface previously returned content as a base64-encoded
string (type 's'), requiring the daemon to encode and GJS to decode
on every paste. D-Bus natively supports byte arrays (type 'ay'),
eliminating both encode and decode steps entirely.

Changes:
- dbus_service.rs: return (String, Vec<u8>); drop base64 calls
- dbus.js: content_b64 arg changed from type 's' to type 'ay'
- panel.js: remove GLib.base64_decode(); pass ay bytes directly
- Cargo.toml/Cargo.lock: remove base64 dependency (no longer used)

For a 1 MB text paste this avoids allocating a 1.33 MB intermediate
string and decoding it on the compositor main thread.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 04:00:06 -05:00
350d647953 Initial commit
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 03:02:34 -05:00