From 73539f9d3863013d8a6baebfd05da0b10b4190c7 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sun, 13 Sep 2026 17:20:09 +0200 Subject: feat(mail-overview): build notification bodies Three rows of author and subject, then +N more, which bounds the height so a mailing list burst is not a wall. Markup characters are escaped because dunst renders body markup and a subject is untrusted text off the internet. --- mail-overview/test-mail-notify.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'mail-overview/test-mail-notify.sh') diff --git a/mail-overview/test-mail-notify.sh b/mail-overview/test-mail-notify.sh index 8be456c..fccf4b3 100755 --- a/mail-overview/test-mail-notify.sh +++ b/mail-overview/test-mail-notify.sh @@ -78,5 +78,38 @@ check "a non-account section is not an account" \ "" \ "$(parse_accounts <<<"$fixture" | awk -F'\t' '$1=="ui"{print $2}')" +# The shape notmuch search --format=json actually returns, trimmed to the two +# fields the body uses. +rows_json='[ + {"authors":"Alice Example","subject":"First subject"}, + {"authors":"Bob Example","subject":"Second subject"}, + {"authors":"Carol Example","subject":"Third subject"} +]' + +check "a body lists author and subject per row" \ + "Alice Example — First subject +Bob Example — Second subject +Carol Example — Third subject" \ + "$(build_body "$rows_json" 3)" + +check "a batch bigger than the rows shown is elided" \ + "Alice Example — First subject +Bob Example — Second subject +Carol Example — Third subject ++7 more" \ + "$(build_body "$rows_json" 10)" + +check "markup characters are escaped, not rendered" \ + "A & B — <script>" \ + "$(build_body '[{"authors":"A & B","subject":"