Recipient allowlist glob support
This release restores an explicit allow-all option for dynamic-recipient workflows after the empty-allowlist change in #248. Implemented in #250 following the feedback in #247.
Recipient allowlists now support case-insensitive, whole-address glob matching:
# Explicitly allow every valid recipient
allowed_recipients = ["*"]
# Or restrict recipients to one domain
allowed_recipients = ["*@example.com"]*@*, ?, and bracket expressions such as [0-9] are also supported. Patterns work through managed CLI/UI and legacy TOML/environment configuration. CLI help, UI guidance, MCP discovery, and documentation have been updated.
Compatibility and upgrade note
Sorry for the disruption caused by the earlier breaking change. An empty allowed_recipients list still denies send_email, forward_email, and save_to_mailbox; it no longer means unrestricted access. Workflows that need changing recipients can now opt in explicitly with *, or use narrower domain patterns.
The policy is shared by sending, forwarding, and draft saves. * does not grant draft-only access. All To/CC/BCC addresses must match; address validation and account capabilities remain enforced. Existing entries containing glob syntax now act as patterns rather than literal addresses, so review them when upgrading.
Validation
PR checks passed across Python 3.11–3.14, native Windows, packaging/container smoke, frontend/browser workflows, and real SMTP/IMAP GreenMail integration. The release workflow revalidates the exact tagged source before publishing artifacts.
Full changelog: 1.8.0...1.9.0