# Add email signatures, as Spark has them · michael/spark-rs

[View on GitCafe](https://git.cafe/michael/spark-rs/commit/e0f21e9ad1089c033eb0af945fec52af9a237d22)

Repository: [michael/spark-rs](https://git.cafe/michael/spark-rs)

Visibility: public

Requested revision: e0f21e9ad1089c033eb0af945fec52af9a237d22

Requested commit: e0f21e9ad1089c033eb0af945fec52af9a237d22

Commit: e0f21e9ad1089c033eb0af945fec52af9a237d22

Tree: fc175d5d186216378b5dc75c2f2640df12732ec4

Author: Michael Rodriguez

Committer: Michael Rodriguez

## Message

```
Add email signatures, as Spark has them

Signatures are HTML, kept in the store with a default per sending address:
Most recent (the one it last sent, else the newest), No signature, or a
particular one. A reply takes the signature the user signed with last in
that conversation.

Settings → Signatures lists each address's default and every signature;
the editor takes pasted rich text or HTML, inline images (made smaller when
they're big) and Reset fonts. In the composer the signature sits between the
body and a forward's original, edited in a sandboxed frame for that one
email, with a picker at its left edge (switch, Hide Signature, settings) and
Add Signature in the footer.

Mail with a signature goes out as text and HTML (multipart/alternative, the
signature's images as related parts, Graph's HTML body with inline
attachments), in body/signature/reply sections. Saved drafts keep the HTML,
so one reopened from its server copy gets its signature and a forward's
original back. HTML is cleaned with ammonia before it's kept or sent.

AI drafting leaves the sign-off to the signature, and agents' send_email adds
the account's signature unless told not to; list_accounts shows it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

```

## Parents

- [87c2da3e30040fddb81a59f67b64259e216e91da](https://git.cafe/michael/spark-rs/commit/87c2da3e30040fddb81a59f67b64259e216e91da?format=markdown)

[Source at this commit](https://git.cafe/michael/spark-rs/tree/e0f21e9ad1089c033eb0af945fec52af9a237d22?format=markdown)
