- main.rs: hold the gtk4::Application (RAII guard from app.hold()) across
the idle_add_local_once save callback, so closing the capture window
can no longer let the process quit before the note is actually written
to disk
- breadpad-shared/src/ai.rs: 10s timeout on the Ollama HTTP call (ureq had
none, so a hung local endpoint could stall indefinitely)
- breadpad-shared/src/calendar.rs: 15s timeout on the CalDAV reqwest
client (applies to every CalDAV request made through it)
- breadpad-shared/src/store.rs: exclusive flock (std::fs::File::lock, no
new dependency needed at this Rust version) on a sidecar lock file
around every read-modify-write span, guarding against breadpad/breadman/
reminder-fire processes racing each other on notes.jsonl
- breadpad-shared/src/scheduler.rs: parse_next_from_rrule now handles
FREQ=MONTHLY (previously fell into the catch-all None arm, so a monthly
reminder fired once and never rescheduled); reachable today via
breadman's free-text RRULE editor field
- breadpad-shared/src/config.rs: Config::save() chmods breadpad.toml to
0600 after writing, since it can hold the CalDAV password in plaintext
Pre-existing, unrelated test failure noted: theme::tests::css_defines_bg_color
fails identically on the original commit (depends on this machine's live
pywal cache) — confirmed via git stash, not touched.
- Add MIT LICENSE file
- Expand .gitignore with standard Rust/Linux entries
- Remove dangling symlinks (breadmancli, breadpadcli) and dev scratchpad (svgs.txt) from git tracking
- Replace unsafe unwrap() calls with expect() in breadman CLI (guarded by prior filter)