pub fn texts(n: &Notification, body_markup: bool) -> (String, String)Expand description
(summary, body) exactly as sent — pure, so the escaping rule is testable.
(The freedesktop “summary” is our title.) The agent’s session summary has
no slot of its own on Linux, so it is the body’s last line (rich-content
spec §1.3), escaped like the rest of the body.