Commit graph

11 commits

Author SHA1 Message Date
Breadway
83630033cd breadclipd: watch-driven capture, flock singleton, ignore rules, pin verb
- Capture now keys off wl-paste's `CLIPBOARD_STATE`: `sensitive`
  (password manager via `wl-copy --sensitive`, covers the old
  x-kde-passwordManagerHint case) and `nil`/`clear` persist nothing;
  `data` reads the content off stdin in the same event, so the
  sensitive check and the read can't straddle a clipboard change.
  A manual `--capture-once` with no CLIPBOARD_STATE falls back to
  querying wl-paste directly, now wrapped in `timeout -k 2 5` so a
  stalled offer can't block a capture process forever.
- Single-instance guard moves to `bread_utils::singleton` (flock) —
  kernel-atomic, auto-released on death, no stale pid file.
- `ignore_rules::is_sensitive`: conservative best-effort heuristics
  that skip copies which look like secrets even when unflagged —
  PEM/OpenSSH private key blocks, `password:`-style lines, labelled
  one-time codes, Luhn-valid card numbers, well-known token prefixes.
  A convenience, not a security boundary.
- `bread.command.clip.pin` verb (payload `{id, pin?}`, pin defaults
  true) → `set_pinned`, emits `bread.clip.pinned` / `.pin.failed`.
- Two independent `wl-paste --watch` loops (regular clipboard always
  on; primary selection when `capture.primary`), each restarting with
  2s→30s capped backoff and state-change-only journal logging.
- Image type is sniffed from magic bytes (PNG/JPEG) on the stdin path
  and requested by actual offered type on the fallback path — a JPEG
  is stored as `.jpg` / `image/jpeg`, not relabelled PNG.
- content_kind: a single line of prose that merely contains a keyword
  ("class is a concept") no longer classifies as code — it must look
  like a statement.
2026-08-31 15:07:22 +08:00
Breadway
cf9293bbf3 Bump version to v0.2.4
All checks were successful
beta (rc) release / build (push) Has been skipped
dev release / build (push) Successful in 47s
release / build (push) Successful in 1m2s
2026-08-16 14:09:21 +08:00
Breadway
999b73bf33 Bump version to v0.2.2
Some checks failed
dev release / build (push) Failing after 1s
beta (rc) release / build (push) Has been skipped
release / build (push) Failing after 1s
2026-08-15 23:05:47 +08:00
Breadway
fe8ea86c87 Pin bread-ecosystem crates to v0.7.2
Some checks failed
dev release / build (push) Failing after 1s
Repoint bread-theme, bread-utils, and bread-screenshots at tag v0.7.2
on git.breadway.dev. Drop the 69ce2d67 rev pin now that screenshots
is on a tagged release.
2026-08-15 22:53:46 +08:00
Breadway
8456424f1a Pin bread-theme/utils to bread-ecosystem v0.7.1; add single-trunk CLAUDE.md
Some checks failed
check / check (push) Failing after 1s
Popup, daemon, and core were split across git.breadway.dev v0.3.0 and
GitHub v0.3.1. Point every bread-theme / bread-utils dep at the same
Forgejo tag. bread-screenshots is not in v0.7.1 (the crate landed after
that tag) so it stays on that remote's main until the next ecosystem
release.

CLAUDE.md now documents the single-trunk model. EVENTS.md is unchanged
— no pin/select verbs.
2026-08-15 21:38:49 +08:00
Breadway
58aa415ef0 random commit message, read it yourself
All checks were successful
dev release / build (push) Successful in 1m6s
2026-07-22 11:37:38 +08:00
Breadway
83b1fd7c23 Fix unswapped bread-utils path dep and stale bread-theme URL; bump to v0.2.1
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
release / build (push) Failing after 1s
2026-07-19 04:02:53 +08:00
Breadway
4c21cc3f71 Switch to tag-pinned bread-ecosystem deps; bump version to v0.2.0 2026-07-19 03:52:27 +08:00
Breadway
7634af0b4f Switch to tag-pinned bread-ecosystem deps; bump version to v0.2.0
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
release / build (push) Failing after 1s
2026-07-19 03:42:05 +08:00
Breadway
8097d1944c breadclip: privacy hardening + event-driven daemon
- history.db and images/*.png are now created with 0600 permissions
  (owner-only) instead of default umask, since clipboard history can
  contain plaintext passwords/tokens.
- breadclipd never persists clipboard content flagged with the
  x-kde-passwordManagerHint MIME type (the convention KeePassXC,
  Bitwarden, etc. use to mark content they own).
- Replaced breadclipd's 500ms busy-poll loop (2-3 wl-paste forks per
  cycle, forever) with wl-paste --watch, so it only reacts on actual
  clipboard changes.
- Documented both behaviors in the README.
2026-07-17 03:17:24 +08:00
Breadway
69bc67e29a Initial commit 2026-07-02 20:59:21 +08:00