crates/ctl/src/commands/notify.rs (~50KB, 8.35% coverage, 54/647 lines; ~464 lines to hit 80%). Setup for Telegram / Slack / webhook / Web Push / dashboard auth, plus digest scheduling.
Scope note
At +464 uncovered lines this is likely 2-3 PRs:
- notify-a: Telegram flow (bot token validation, group id auto-detect, digest hour parse, chat preview)
- notify-b: Slack + webhook (URL validation, signature headers, test-message dispatch)
- notify-c: dashboard + Web Push keys (ed25519/p256 gen, key persist, session timeout logic)
Suggested tests (cross-cutting)
Acceptance
cargo test -p innerwarden-ctl notify >= existing + ~20 new; file coverage >= 80%.
Estimated effort: 2-3 PRs, 15-20h total.
crates/ctl/src/commands/notify.rs(~50KB, 8.35% coverage, 54/647 lines; ~464 lines to hit 80%). Setup for Telegram / Slack / webhook / Web Push / dashboard auth, plus digest scheduling.Scope note
At +464 uncovered lines this is likely 2-3 PRs:
Suggested tests (cross-cutting)
DigestHourConfigparse (Disabled / Hour(0..=23) / invalid input)admin-actions-*.jsonl)Acceptance
cargo test -p innerwarden-ctl notify>= existing + ~20 new; file coverage >= 80%.Estimated effort: 2-3 PRs, 15-20h total.