Commit graph

14 commits

Author SHA1 Message Date
3c77969680 fix(m1): inotify — use read_to_end for UTF-8 resilience, await spawn_blocking
- read_to_end + from_utf8_lossy replaces read_to_string so Wine/game logs
  with Latin-1 bytes are handled via U+FFFD replacement instead of silently
  dropping all events from that file
- bytes_read from I/O call used for new_pos (not content.len()) for correct
  byte position accounting
- spawn_blocking handle is now awaited so panics inside the blocking task
  surface to the caller instead of being silently swallowed
2026-05-18 17:25:30 -07:00
7eaf22c130 feat(m1): inotify app log watcher — tails log files for known apps 2026-05-18 17:14:10 -07:00
db7d30d4c1 feat(m1): kmsg watcher — reads /dev/kmsg kernel ring buffer 2026-05-18 17:13:36 -07:00
e48536dfbe feat(m1): journald watcher — streams journalctl JSON to event channel 2026-05-18 17:13:23 -07:00
d1bea47495 refactor(m1): restructure watcher into module with EventSource, SystemEvent
Replace flat watcher.rs with watcher/ module containing mod.rs plus stub
sub-modules for journald, kmsg, and inotify. Upgrades spawn() to accept
log_paths and return mpsc::Receiver<SystemEvent>. Updates lib.rs call site.
2026-05-18 17:10:37 -07:00
6acf085c0f fix(m1): validate patterns at load, add Serialize to EventSource, expand tests
- load() now rejects patterns with empty match_text or empty sources list
- EventSource derives Serialize/Deserialize with serde tag for emit() readiness
- AppLog variant changed to struct form (AppLog { app }) for tagged enum compat
- classify() takes &SystemEvent directly (top-level use import, not per-fn)
- #[must_use] on classify()
- 5 new tests: any-source wildcard (journald+kmsg), applog mismatch, empty-field validation
2026-05-18 17:08:25 -07:00
1e733a062b feat(m1): pattern system — PatternFile loader and classify()
Add EventSource enum and update SystemEvent in watcher.rs (M0 stub
updated to support Task 5 clean deletion). Create patterns.rs with
PatternFile/Pattern/MatchedEvent types, TOML loader, and classify()
matching against source + text. Five unit tests covering journald,
applog, no-match, and source discrimination cases.
2026-05-18 16:57:05 -07:00
a94e3dbb66 fix(distro): handle single-quoted IDs, add mint, run cargo fmt
- parse_id now strips both double and single quotes per os-release spec
- distro_family debian arm includes "mint" (legacy Linux Mint ID)
- Add tests: single-quoted ID round-trip, mint family classification
2026-05-18 16:55:06 -07:00
dc45c82aba feat(m1): distro detection from /etc/os-release, update_notification_level command 2026-05-18 15:53:03 -07:00
cee05b5d18 fix(m1): serde defaults on Tier and NotificationLevel, PartialEq on SourceOs 2026-05-18 15:21:03 -07:00
c94fc58296 feat(m1): add Tier and NotificationLevel to config 2026-05-18 15:17:56 -07:00
5216549d0a chore(m1): use notify v8, dirs v6, tighten capabilities permissions 2026-05-18 14:53:05 -07:00
c33d4cf07f chore(m1): add notify dep, fix capabilities window name and permissions 2026-05-18 14:05:16 -07:00
642f89c10b feat: M0 scaffold — Tauri 2 + Vue 3, system tray, first-run onboarding, config layer 2026-05-18 10:06:49 -07:00