Plain text, anonymous SMTP, and agent skills
Pop can now send plain text emails, work with anonymous SMTP relays, and teach your fav AI agent (like Crush 💘) how to send mail from the terminal!
Thanks to @jficz, you can skip Markdown-to-HTML rendering by passing --plaintext:
pop --plaintext \
--from me@example.com \
--to you@example.com \
--subject "Hello!" \
--body "Just plain text."You can also set POP_PLAINTEXT=true. Plain text delivery works with both SMTP and Resend.
Courtesy of @c-tonneslan, it supports SMTP relays that don't require authentication. Set the SMTP host as usual and leave the username and password unset:
export POP_SMTP_HOST=corpo.lan
export POP_SMTP_PORT=25Finally, Pop ships with a skill teaching Crush 💘 and other Agent Skills-supporting harnesses how to send mail, along with installers for Crush, Claude Code, Codex, Cursor, and Pi:
pop skill
pop install-skill crush
pop install-skill claude
pop install-skill codex
pop install-skill cursor
pop install-skill piThanks to everyone who contributed, and thanks for using Pop!
Charm ✉️
Changelog
New!
- 6193324: feat: Allow plaintext e-mails (#125) (@jficz)
- 6a0c5f3: smtp: allow more anonymous relays (#167) (@c-tonneslan)
- 79b6dc0: Skills: add Pi as an install-skill target (@meowgorithm)
- 0a7d2ac: Skills: add install-skill subcommand to install skill for AI agents (@meowgorithm)
- f1b761b: Skills: add pop skill command to print a skill definition (@meowgorithm)
Docs
Other stuff
- 2f53667: AGENTS: add AGENTS.md (@meowgorithm)
- 181e4ac: CI: allow automatic Go toolchain selection (@Amolith)
- e7111b4: OAuth: fix regression when oauth is revoked that would prevent start (@meowgorithm)
- f1fb35c: README: add info about skills (@meowgorithm)
- 18d5953: README: correct URL in workflow badge (@meowgorithm)
- a0d245c: README: fix typo (@meowgorithm)
- 359de90: Skills: cleanup install-skill error formatting and output (@meowgorithm)
- 29d72d5: Skills: help text copyedit (@meowgorithm)
- 1a29201: build: bump Go to 1.26.5 (@Amolith)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/pop/releases/download/v0.4.0/checksums.txt'
wget 'https://github.com/charmbracelet/pop/releases/download/v0.4.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
