Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pop for openSUSE:Factory checked in 
at 2026-04-29 19:18:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pop (Old)
 and      /work/SRC/openSUSE:Factory/.pop.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pop"

Wed Apr 29 19:18:14 2026 rev:4 rq:1349829 version:0.2.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/pop/pop.changes  2024-12-03 20:49:00.599563247 
+0100
+++ /work/SRC/openSUSE:Factory/.pop.new.30200/pop.changes       2026-04-29 
19:19:18.244670533 +0200
@@ -1,0 +2,82 @@
+Tue Apr 28 14:34:44 UTC 2026 - Sai Karthik Karra <[email protected]>
+
+- Update to version 0.2.1:
+  * chore: lint
+  * chore(ci): update lint rules
+  * chore(deps): bump all deps, bump go version to v1.25.9
+  * chore: remove CODEOWNERS
+  * chore(deps): bump github.com/charmbracelet/bubbles in the all group (#161)
+  * chore(deps): bump github.com/charmbracelet/bubbles in the all group (#159)
+  * chore(deps): bump github.com/yuin/goldmark in the all group (#158)
+  * chore(deps): bump github.com/yuin/goldmark in the all group (#157)
+  * chore(deps): bump github.com/spf13/cobra in the all group (#156)
+  * chore(deps): bump actions/checkout from 5 to 6 in the all group (#155)
+  * chore(deps): bump golangci/golangci-lint-action in the all group (#154)
+  * chore(deps): bump github.com/charmbracelet/bubbletea in the all group 
(#151)
+  * chore(deps): bump the all group with 3 updates (#150)
+  * chore(deps): bump actions/setup-go from 5 to 6 in the all group (#148)
+  * ci: sync dependabot config (#146)
+  * chore(deps): bump actions/checkout from 4 to 5 (#145)
+  * chore(deps): bump github.com/yuin/goldmark from 1.7.12 to 1.7.13 (#143)
+  * chore(deps): bump github.com/charmbracelet/bubbletea from 1.3.5 to 1.3.6 
(#140)
+  * chore(deps): bump github.com/yuin/goldmark from 1.7.11 to 1.7.12 (#135)
+  * chore(deps): bump golangci/golangci-lint-action from 7 to 8 (#134)
+  * chore(deps): bump github.com/charmbracelet/bubbletea from 1.3.4 to 1.3.5 
(#133)
+  * chore(deps): bump github.com/yuin/goldmark from 1.7.10 to 1.7.11 (#132)
+  * ci: sync dependabot config (#131)
+  * chore(deps): bump github.com/yuin/goldmark from 1.7.8 to 1.7.10 (#130)
+  * chore(deps): bump github.com/charmbracelet/bubbles from 0.20.0 to 0.21.0 
(#129)
+  * chore(deps): bump golangci/golangci-lint-action from 6 to 7 (#128)
+  * Merge pull request #124 from jficz/fix_92
+  * chore(deps): bump github.com/charmbracelet/lipgloss from 1.0.0 to 1.1.0 
(#127)
+  * chore(deps): bump github.com/charmbracelet/bubbletea from 1.3.3 to 1.3.4 
(#126)
+  * chore(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1 (#123)
+  * ci: sync dependabot config
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.3.2 to 1.3.3 
(#121)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.3.0 to 1.3.2 
(#120)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.2.4 to 1.3.0 
(#117)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.2.3 to 1.2.4 
(#113)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.2.2 to 1.2.3 
(#112)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.2.1 to 1.2.2 
(#111)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.2.0 to 1.2.1 
(#110)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.1.2 to 1.2.0 
(#109)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.13.0 to 0.13.1 
(#106)
+  * feat(deps): bump github.com/yuin/goldmark from 1.7.4 to 1.7.8 (#105)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.1.1 to 1.1.2 
(#107)
+  * feat(deps): bump github.com/yuin/goldmark from 1.7.2 to 1.7.4 (#85)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.1.0 to 1.1.1 
(#101)
+  * feat(deps): bump github.com/charmbracelet/bubbles from 0.19.0 to 0.20.0 
(#100)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 1.0.0 to 1.1.0 
(#99)
+  * feat(deps): bump github.com/charmbracelet/bubbletea from 0.27.0 to 1.0.0 
(#97)
+  * feat(deps): bump github.com/charmbracelet/bubbles from 0.18.0 to 0.19.0 
(#93)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.12.1 to 0.13.0 
(#94)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.11.0 to 0.12.1 
(#90)
+  * chore(deps): bump golangci/golangci-lint-action from 5 to 6 (#72)
+  * chore(deps): bump deps
+  * feat(deps): bump github.com/yuin/goldmark from 1.7.1 to 1.7.2 (#78)
+  * feat(deps): bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (#79)
+  * feat(deps): bump github.com/charmbracelet/x/exp/ordered (#80)
+  * feat: add CC and BCC inputs if --cc or --bcc is specified. (#65)
+  * Save email body to tmp file when error (#64)
+  * feat(deps): bump github.com/yuin/goldmark from 1.7.0 to 1.7.1 (#56)
+  * chore(deps): bump golangci/golangci-lint-action from 3 to 5 (#63)
+  * Correct mods example (#57)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.9.1 to 0.10.0 
(#54)
+  * docs: update README with resend from instruction (#5)
+  * chore(deps): bump dependencies
+  * Create CODEOWNERS
+  * chore(deps): bump actions/setup-go from 4 to 5 (#46)
+  * feat(deps): bump github.com/spf13/cobra from 1.7.0 to 1.8.0 (#41)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.8.0 to 0.9.1 
(#39)
+  * fix: `--from` should take priority over `--smtp.user` if set
+  * chore(deps): bump actions/checkout from 3 to 4 (#34)
+  * feat(deps): bump github.com/xhit/go-simple-mail/v2 from 2.15.0 to 2.16.0 
(#30)
+  * feat(deps): bump github.com/charmbracelet/lipgloss from 0.7.1 to 0.8.0 
(#32)
+  * fix: handle both resend and smtp set up together (#28)
+  * feat(deps): bump github.com/yuin/goldmark from 1.5.5 to 1.5.6
+  * build: fix aur project name
+  * build: fix aur_key
+  * fix: exit status 1 when missing environment variable
+  * fix: remove extra completion cmd
+
+-------------------------------------------------------------------

Old:
----
  pop-0.2.0.tar.xz

New:
----
  pop-0.2.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pop.spec ++++++
--- /var/tmp/diff_new_pack.DwtNrp/_old  2026-04-29 19:19:18.768692001 +0200
+++ /var/tmp/diff_new_pack.DwtNrp/_new  2026-04-29 19:19:18.772692166 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package pop
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) specCURRENT_YEAR SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           pop
-Version:        0.2.0
+Version:        0.2.1
 Release:        0
 Summary:        Program to send emails from a terminal
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DwtNrp/_old  2026-04-29 19:19:18.808693640 +0200
+++ /var/tmp/diff_new_pack.DwtNrp/_new  2026-04-29 19:19:18.812693804 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/charmbracelet/pop.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.2.0</param>
+    <param name="revision">v0.2.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.DwtNrp/_old  2026-04-29 19:19:18.852695442 +0200
+++ /var/tmp/diff_new_pack.DwtNrp/_new  2026-04-29 19:19:18.872696262 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/charmbracelet/pop.git</param>
-              <param 
name="changesrevision">99f44cc8822a5ba564f0eb02b8a19b92530834d9</param></service></servicedata>
+              <param 
name="changesrevision">bf5b4738529a3fe53a23aff7bc4b9136e8f8f189</param></service></servicedata>
 (No newline at EOF)
 

++++++ pop-0.2.0.tar.xz -> pop-0.2.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/ISSUE_TEMPLATE/bug_report.md 
new/pop-0.2.1/.github/ISSUE_TEMPLATE/bug_report.md
--- old/pop-0.2.0/.github/ISSUE_TEMPLATE/bug_report.md  2023-08-01 
14:32:31.000000000 +0200
+++ new/pop-0.2.1/.github/ISSUE_TEMPLATE/bug_report.md  1970-01-01 
01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
-
-**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
-
-**Additional context**
-Add any other context about the problem here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/ISSUE_TEMPLATE/feature_request.md 
new/pop-0.2.1/.github/ISSUE_TEMPLATE/feature_request.md
--- old/pop-0.2.0/.github/ISSUE_TEMPLATE/feature_request.md     2023-08-01 
14:32:31.000000000 +0200
+++ new/pop-0.2.1/.github/ISSUE_TEMPLATE/feature_request.md     1970-01-01 
01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always 
frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features 
you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/dependabot.yml 
new/pop-0.2.1/.github/dependabot.yml
--- old/pop-0.2.0/.github/dependabot.yml        2023-08-01 14:32:31.000000000 
+0200
+++ new/pop-0.2.1/.github/dependabot.yml        1970-01-01 01:00:00.000000000 
+0100
@@ -1,29 +0,0 @@
-version: 2
-updates:
-  - package-ecosystem: "gomod"
-    directory: "/"
-    schedule:
-      interval: "daily"
-    labels:
-      - "dependencies"
-    commit-message:
-      prefix: "feat"
-      include: "scope"
-  - package-ecosystem: "github-actions"
-    directory: "/"
-    schedule:
-      interval: "daily"
-    labels:
-      - "dependencies"
-    commit-message:
-      prefix: "chore"
-      include: "scope"
-  - package-ecosystem: "docker"
-    directory: "/"
-    schedule:
-      interval: "daily"
-    labels:
-      - "dependencies"
-    commit-message:
-      prefix: "feat"
-      include: "scope"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/workflows/build.yml 
new/pop-0.2.1/.github/workflows/build.yml
--- old/pop-0.2.0/.github/workflows/build.yml   2023-08-01 14:32:31.000000000 
+0200
+++ new/pop-0.2.1/.github/workflows/build.yml   1970-01-01 01:00:00.000000000 
+0100
@@ -1,12 +0,0 @@
-name: build
-
-on: [push, pull_request]
-
-jobs:
-  build:
-    uses: charmbracelet/meta/.github/workflows/build.yml@main
-
-  snapshot:
-    uses: charmbracelet/meta/.github/workflows/snapshot.yml@main
-    secrets:
-      goreleaser_key: ${{ secrets.GORELEASER_KEY }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/workflows/goreleaser.yml 
new/pop-0.2.1/.github/workflows/goreleaser.yml
--- old/pop-0.2.0/.github/workflows/goreleaser.yml      2023-08-01 
14:32:31.000000000 +0200
+++ new/pop-0.2.1/.github/workflows/goreleaser.yml      1970-01-01 
01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-name: goreleaser
-
-on:
-  push:
-    tags:
-      - v*.*.*
-
-concurrency:
-  group: goreleaser
-  cancel-in-progress: true
-
-jobs:
-  goreleaser:
-    uses: charmbracelet/meta/.github/workflows/goreleaser.yml@main
-    secrets:
-      docker_username: ${{ secrets.DOCKERHUB_USERNAME }}
-      docker_token: ${{ secrets.DOCKERHUB_TOKEN }}
-      gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
-      goreleaser_key: ${{ secrets.GORELEASER_KEY }}
-      fury_token: ${{ secrets.FURY_TOKEN }}
-      nfpm_gpg_key: ${{ secrets.NFPM_GPG_KEY }}
-      nfpm_passphrase: ${{ secrets.NFPM_PASSPHRASE }}
-
-# yaml-language-server: 
$schema=https://json.schemastore.org/github-workflow.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/workflows/lint.yml 
new/pop-0.2.1/.github/workflows/lint.yml
--- old/pop-0.2.0/.github/workflows/lint.yml    2023-08-01 14:32:31.000000000 
+0200
+++ new/pop-0.2.1/.github/workflows/lint.yml    1970-01-01 01:00:00.000000000 
+0100
@@ -1,21 +0,0 @@
-name: lint
-on:
-  push:
-  pull_request:
-
-jobs:
-  golangci:
-    name: lint
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-go@v4
-        with:
-          go-version: ^1
-      - name: golangci-lint
-        uses: golangci/golangci-lint-action@v3
-        with:
-          # Optional: golangci-lint command line arguments.
-          args: --issues-exit-code=0
-          # Optional: show only new issues if it's a pull request. The default 
value is `false`.
-          only-new-issues: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.github/workflows/nightly.yml 
new/pop-0.2.1/.github/workflows/nightly.yml
--- old/pop-0.2.0/.github/workflows/nightly.yml 2023-08-01 14:32:31.000000000 
+0200
+++ new/pop-0.2.1/.github/workflows/nightly.yml 1970-01-01 01:00:00.000000000 
+0100
@@ -1,14 +0,0 @@
-name: nightly
-
-on:
-  push:
-    branches:
-      - main
-
-jobs:
-  nightly:
-    uses: charmbracelet/meta/.github/workflows/nightly.yml@main
-    secrets:
-      docker_username: ${{ secrets.DOCKERHUB_USERNAME }}
-      docker_token: ${{ secrets.DOCKERHUB_TOKEN }}
-      goreleaser_key: ${{ secrets.GORELEASER_KEY }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.gitignore new/pop-0.2.1/.gitignore
--- old/pop-0.2.0/.gitignore    2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/.gitignore    1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-*.gif
-*.pdf
-dist
-completions
-manpages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.golangci.yml new/pop-0.2.1/.golangci.yml
--- old/pop-0.2.0/.golangci.yml 2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/.golangci.yml 2026-04-28 16:16:02.000000000 +0200
@@ -1,25 +1,22 @@
+version: "2"
 run:
   tests: false
-
-issues:
-  include:
-    - EXC0001
-    - EXC0005
-    - EXC0011
-    - EXC0012
-    - EXC0013
-
-  max-issues-per-linter: 0
-  max-same-issues: 0
-
 linters:
   enable:
     - bodyclose
-    - exportloopref
-    - goimports
+    - exhaustive
+    - goconst
+    - godot
+    - gomoddirectives
+    - goprintffuncname
     - gosec
+    - misspell
+    - nakedret
+    - nestif
     - nilerr
-    - predeclared
+    - noctx
+    - nolintlint
+    - prealloc
     - revive
     - rowserrcheck
     - sqlclosecheck
@@ -27,3 +24,24 @@
     - unconvert
     - unparam
     - whitespace
+    - wrapcheck
+  exclusions:
+    rules:
+      - text: '(slog|log)\.\w+'
+        linters:
+          - noctx
+    generated: lax
+    presets:
+      - common-false-positives
+  settings:
+    exhaustive:
+      default-signifies-exhaustive: true
+issues:
+  max-issues-per-linter: 0
+  max-same-issues: 0
+formatters:
+  enable:
+    - gofumpt
+    - goimports
+  exclusions:
+    generated: lax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/.goreleaser.yml 
new/pop-0.2.1/.goreleaser.yml
--- old/pop-0.2.0/.goreleaser.yml       2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/.goreleaser.yml       2026-04-28 16:16:02.000000000 +0200
@@ -12,4 +12,4 @@
   maintainer: "Maas Lalani <[email protected]>"
   brew_commit_author_name: "Maas Lalani"
   brew_commit_author_email: "[email protected]"
-  aur_project_name: charm-pop-bin
+  aur_project_name: charm-pop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/README.md new/pop-0.2.1/README.md
--- old/pop-0.2.0/README.md     2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/README.md     2026-04-28 16:16:02.000000000 +0200
@@ -72,6 +72,9 @@
 export [email protected]
 export POP_SIGNATURE="Sent with [Pop](https://github.com/charmbracelet/pop)!"
 ```
+> **Note**:
+> If you wish to use a resend account without a custom domain, you can use
+> `[email protected]` to send emails.
 
 ## Installation
 
@@ -112,7 +115,7 @@
 > Use the `--preview` flag to preview the email and make changes before 
 > sending.
 
 ```bash
-pop <<< '$(mods -f "Explain why CLIs are awesome")' \
+pop <<< "$(mods -f 'Explain why CLIs are awesome')" \
     --subject "The command line is the best" \
     --preview
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/attachments.go new/pop-0.2.1/attachments.go
--- old/pop-0.2.0/attachments.go        2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/attachments.go        2026-04-28 16:16:02.000000000 +0200
@@ -1,3 +1,4 @@
+// Package main implements Pop, a tool for sending emails from your terminal.
 package main
 
 import (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/email.go new/pop-0.2.1/email.go
--- old/pop-0.2.0/email.go      2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/email.go      2026-04-28 16:16:02.000000000 +0200
@@ -4,6 +4,7 @@
        "bytes"
        "crypto/tls"
        "errors"
+       "fmt"
        "os"
        "path/filepath"
        "strings"
@@ -48,15 +49,21 @@
                        err = errors.New("[ERROR]: unknown delivery method")
                }
                if err != nil {
+                       path, storeErr := saveTmp(m.Body.Value())
+                       if storeErr == nil {
+                               err = fmt.Errorf("%w\nEmail saved to: %s", err, 
path)
+                       }
                        return sendEmailFailureMsg(err)
                }
                return sendEmailSuccessMsg{}
        }
 }
 
-const gmailSuffix = "@gmail.com"
-const gmailSMTPHost = "smtp.gmail.com"
-const gmailSMTPPort = 587
+const (
+       gmailSuffix   = "@gmail.com"
+       gmailSMTPHost = "smtp.gmail.com"
+       gmailSMTPPort = 587
+)
 
 func sendSMTPEmail(to, cc, bcc []string, from, subject, body string, 
attachments []string) error {
        server := mail.NewSMTPClient()
@@ -95,9 +102,8 @@
        }
 
        smtpClient, err := server.Connect()
-
        if err != nil {
-               return err
+               return fmt.Errorf("connecting to SMTP server: %w", err)
        }
 
        email := mail.NewMSG()
@@ -123,10 +129,10 @@
                })
        }
 
-       return email.Send(smtpClient)
+       return fmt.Errorf("sending email: %w", email.Send(smtpClient))
 }
 
-func sendResendEmail(to, _, _ []string, from, subject, body string, 
attachments []string) error {
+func sendResendEmail(to, cc, bcc []string, from, subject, body string, 
attachments []string) error {
        client := resend.NewClient(resendAPIKey)
 
        html := bytes.NewBufferString("")
@@ -151,6 +157,8 @@
                From:        from,
                To:          to,
                Subject:     subject,
+               Cc:          cc,
+               Bcc:         bcc,
                Html:        html.String(),
                Text:        body,
                Attachments: makeAttachments(attachments),
@@ -158,7 +166,7 @@
 
        _, err := client.Emails.Send(request)
        if err != nil {
-               return err
+               return fmt.Errorf("sending email via Resend: %w", err)
        }
 
        return nil
@@ -183,3 +191,20 @@
 
        return attachments
 }
+
+// saveTmp is a helper function that stores a string in a temporary file.
+// It returns the path of the file created.
+func saveTmp(s string) (string, error) {
+       f, err := os.CreateTemp("", fmt.Sprintf("pop-%s-*.txt", 
time.Now().Format("2006-01-02")))
+       if err != nil {
+               return "", fmt.Errorf("creating temp file: %w", err)
+       }
+       defer func() { _ = f.Close() }()
+
+       _, err = f.WriteString(s)
+       if err != nil {
+               return "", fmt.Errorf("error writing to %s: %w", f.Name(), err)
+       }
+
+       return f.Name(), nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/go.mod new/pop-0.2.1/go.mod
--- old/pop-0.2.0/go.mod        2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/go.mod        2026-04-28 16:16:02.000000000 +0200
@@ -1,44 +1,47 @@
 module github.com/charmbracelet/pop
 
-go 1.19
+go 1.25.9
 
 require (
-       github.com/charmbracelet/bubbles v0.16.2-0.20230711184233-0bdcc628fb8f
-       github.com/charmbracelet/bubbletea v0.24.3-0.20230710130425-c4c83ba757f8
-       github.com/charmbracelet/lipgloss v0.7.1
-       github.com/charmbracelet/x/exp/ordered 
v0.0.0-20230707174939-50fb4f48b5b3
-       github.com/muesli/mango-cobra v1.2.0
+       github.com/charmbracelet/bubbles v1.0.0
+       github.com/charmbracelet/bubbletea v1.3.10
+       github.com/charmbracelet/lipgloss v1.1.0
+       github.com/charmbracelet/x/exp/ordered v0.1.0
+       github.com/muesli/mango-cobra v1.3.0
        github.com/muesli/roff v0.1.0
        github.com/resendlabs/resend-go v1.7.0
-       github.com/spf13/cobra v1.7.0
-       github.com/xhit/go-simple-mail/v2 v2.15.0
-       github.com/yuin/goldmark v1.5.5
+       github.com/spf13/cobra v1.10.2
+       github.com/xhit/go-simple-mail/v2 v2.16.0
+       github.com/yuin/goldmark v1.8.2
 )
 
 require (
        github.com/atotto/clipboard v0.1.4 // indirect
        github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
-       github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // 
indirect
+       github.com/charmbracelet/colorprofile v0.4.3 // indirect
+       github.com/charmbracelet/x/ansi v0.11.7 // indirect
+       github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
+       github.com/charmbracelet/x/term v0.2.2 // indirect
+       github.com/clipperhouse/displaywidth v0.11.0 // indirect
+       github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
        github.com/dustin/go-humanize v1.0.1 // indirect
+       github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // 
indirect
        github.com/go-test/deep v1.1.0 // indirect
        github.com/inconshreveable/mousetrap v1.1.0 // indirect
-       github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
-       github.com/mattn/go-isatty v0.0.19 // indirect
+       github.com/lucasb-eyer/go-colorful v1.4.0 // indirect
+       github.com/mattn/go-isatty v0.0.22 // indirect
        github.com/mattn/go-localereader v0.0.1 // indirect
-       github.com/mattn/go-runewidth v0.0.14 // indirect
+       github.com/mattn/go-runewidth v0.0.23 // indirect
        github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
        github.com/muesli/cancelreader v0.2.2 // indirect
-       github.com/muesli/mango v0.1.0 // indirect
-       github.com/muesli/mango-pflag v0.1.0 // indirect
-       github.com/muesli/reflow v0.3.0 // indirect
-       github.com/muesli/termenv v0.15.2 // indirect
-       github.com/rivo/uniseg v0.4.4 // indirect
-       github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f // indirect
-       github.com/spf13/pflag v1.0.5 // indirect
-       github.com/toorop/go-dkim v0.0.0-20201103131630-e1cd1a0a5208 // indirect
-       golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect
-       golang.org/x/sync v0.3.0 // indirect
-       golang.org/x/sys v0.10.0 // indirect
-       golang.org/x/term v0.10.0 // indirect
-       golang.org/x/text v0.11.0 // indirect
+       github.com/muesli/mango v0.2.0 // indirect
+       github.com/muesli/mango-pflag v0.2.0 // indirect
+       github.com/muesli/termenv v0.16.0 // indirect
+       github.com/rivo/uniseg v0.4.7 // indirect
+       github.com/sahilm/fuzzy v0.1.1 // indirect
+       github.com/spf13/pflag v1.0.10 // indirect
+       github.com/toorop/go-dkim v0.0.0-20250226130143-9025cce95817 // indirect
+       github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
+       golang.org/x/sys v0.43.0 // indirect
+       golang.org/x/text v0.36.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/go.sum new/pop-0.2.1/go.sum
--- old/pop-0.2.0/go.sum        2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/go.sum        2026-04-28 16:16:02.000000000 +0200
@@ -1,84 +1,101 @@
+github.com/MakeNowJust/heredoc v1.0.0 
h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
+github.com/MakeNowJust/heredoc v1.0.0/go.mod 
h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
 github.com/atotto/clipboard v0.1.4 
h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
 github.com/atotto/clipboard v0.1.4/go.mod 
h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 
h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod 
h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
-github.com/charmbracelet/bubbles v0.16.2-0.20230711184233-0bdcc628fb8f 
h1:LaLDdRQ4Ob5/J2s+FIjuW1v55HrtxAM9h4bws5cjsj8=
-github.com/charmbracelet/bubbles v0.16.2-0.20230711184233-0bdcc628fb8f/go.mod 
h1:XUdibuVUiMfcfKTRla58bmY3TWsdjgF+Rp8pvimQLck=
-github.com/charmbracelet/bubbletea v0.24.3-0.20230710130425-c4c83ba757f8 
h1:rPWhtGCoYYodPCkDzC/BKEjape4a6uWAMFPd5lA0iv8=
-github.com/charmbracelet/bubbletea 
v0.24.3-0.20230710130425-c4c83ba757f8/go.mod 
h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg=
-github.com/charmbracelet/lipgloss v0.7.1 
h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
-github.com/charmbracelet/lipgloss v0.7.1/go.mod 
h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
-github.com/charmbracelet/x/exp/ordered v0.0.0-20230707174939-50fb4f48b5b3 
h1:n1M8YLRcevMcCxr3vdLjtcrwVBwQpnbZU9IWvTxNhXw=
-github.com/charmbracelet/x/exp/ordered 
v0.0.0-20230707174939-50fb4f48b5b3/go.mod 
h1:PHXDBVg6d66dpDTqESmefHTluiCgsCWPNtXA6g1ePGU=
-github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 
h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
-github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod 
h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod 
h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/aymanbagabas/go-udiff v0.3.1 
h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY=
+github.com/aymanbagabas/go-udiff v0.3.1/go.mod 
h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E=
+github.com/charmbracelet/bubbles v1.0.0 
h1:12J8/ak/uCZEMQ6KU7pcfwceyjLlWsDLAxB5fXonfvc=
+github.com/charmbracelet/bubbles v1.0.0/go.mod 
h1:9d/Zd5GdnauMI5ivUIVisuEm3ave1XwXtD1ckyV6r3E=
+github.com/charmbracelet/bubbletea v1.3.10 
h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw=
+github.com/charmbracelet/bubbletea v1.3.10/go.mod 
h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=
+github.com/charmbracelet/colorprofile v0.4.3 
h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q=
+github.com/charmbracelet/colorprofile v0.4.3/go.mod 
h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q=
+github.com/charmbracelet/lipgloss v1.1.0 
h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
+github.com/charmbracelet/lipgloss v1.1.0/go.mod 
h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
+github.com/charmbracelet/x/ansi v0.11.7 
h1:kzv1kJvjg2S3r9KHo8hDdHFQLEqn4RBCb39dAYC84jI=
+github.com/charmbracelet/x/ansi v0.11.7/go.mod 
h1:9qGpnAVYz+8ACONkZBUWPtL7lulP9No6p1epAihUZwQ=
+github.com/charmbracelet/x/cellbuf v0.0.15 
h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI=
+github.com/charmbracelet/x/cellbuf v0.0.15/go.mod 
h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=
+github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 
h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ=
+github.com/charmbracelet/x/exp/golden 
v0.0.0-20241011142426-46044092ad91/go.mod 
h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
+github.com/charmbracelet/x/exp/ordered v0.1.0 
h1:55/qLwjIh0gL0Vni+QAWk7T/qRVP6sBf+2agPBgnOFE=
+github.com/charmbracelet/x/exp/ordered v0.1.0/go.mod 
h1:5UHwmG+is5THxMyCJHNPCn2/ecI07aKNrW+LcResjJ8=
+github.com/charmbracelet/x/term v0.2.2 
h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
+github.com/charmbracelet/x/term v0.2.2/go.mod 
h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
+github.com/clipperhouse/displaywidth v0.11.0 
h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
+github.com/clipperhouse/displaywidth v0.11.0/go.mod 
h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=
+github.com/clipperhouse/uax29/v2 v2.7.0 
h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
+github.com/clipperhouse/uax29/v2 v2.7.0/go.mod 
h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod 
h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/dustin/go-humanize v1.0.1 
h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
 github.com/dustin/go-humanize v1.0.1/go.mod 
h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f 
h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
+github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod 
h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
 github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
 github.com/go-test/deep v1.1.0/go.mod 
h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
 github.com/inconshreveable/mousetrap v1.1.0 
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
 github.com/inconshreveable/mousetrap v1.1.0/go.mod 
h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
 github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
-github.com/lucasb-eyer/go-colorful v1.2.0 
h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
-github.com/lucasb-eyer/go-colorful v1.2.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
-github.com/mattn/go-isatty v0.0.19 
h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
-github.com/mattn/go-isatty v0.0.19/go.mod 
h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/lucasb-eyer/go-colorful v1.4.0 
h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4=
+github.com/lucasb-eyer/go-colorful v1.4.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/mattn/go-isatty v0.0.22 
h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
+github.com/mattn/go-isatty v0.0.22/go.mod 
h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
 github.com/mattn/go-localereader v0.0.1 
h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
 github.com/mattn/go-localereader v0.0.1/go.mod 
h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
-github.com/mattn/go-runewidth v0.0.12/go.mod 
h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
-github.com/mattn/go-runewidth v0.0.14 
h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
-github.com/mattn/go-runewidth v0.0.14/go.mod 
h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.23 
h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw=
+github.com/mattn/go-runewidth v0.0.23/go.mod 
h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
 github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 
h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
 github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod 
h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
 github.com/muesli/cancelreader v0.2.2 
h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
 github.com/muesli/cancelreader v0.2.2/go.mod 
h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
-github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI=
-github.com/muesli/mango v0.1.0/go.mod 
h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
-github.com/muesli/mango-cobra v1.2.0 
h1:DQvjzAM0PMZr85Iv9LIMaYISpTOliMEg+uMFtNbYvWg=
-github.com/muesli/mango-cobra v1.2.0/go.mod 
h1:vMJL54QytZAJhCT13LPVDfkvCUJ5/4jNUKF/8NC2UjA=
-github.com/muesli/mango-pflag v0.1.0 
h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe7Sg=
-github.com/muesli/mango-pflag v0.1.0/go.mod 
h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0=
-github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
-github.com/muesli/reflow v0.3.0/go.mod 
h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
+github.com/muesli/mango v0.2.0 h1:iNNc0c5VLQ6fsMgAqGQofByNUBH2Q2nEbD6TaI+5yyQ=
+github.com/muesli/mango v0.2.0/go.mod 
h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
+github.com/muesli/mango-cobra v1.3.0 
h1:vQy5GvPg3ndOSpduxutqFoINhWk3vD5K2dXo5E8pqec=
+github.com/muesli/mango-cobra v1.3.0/go.mod 
h1:Cj1ZrBu3806Qw7UjxnAUgE+7tllUBj1NCLQDwwGx19E=
+github.com/muesli/mango-pflag v0.2.0 
h1:QViokgKDZQCzKhYe1zH8D+UlPJzBSGoP9yx0hBG0t5k=
+github.com/muesli/mango-pflag v0.2.0/go.mod 
h1:X9LT1p/pbGA1wjvEbtwnixujKErkP0jVmrxwrw3fL0Y=
 github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
 github.com/muesli/roff v0.1.0/go.mod 
h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
-github.com/muesli/termenv v0.15.2 
h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
-github.com/muesli/termenv v0.15.2/go.mod 
h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
+github.com/muesli/termenv v0.16.0 
h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
+github.com/muesli/termenv v0.16.0/go.mod 
h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/resendlabs/resend-go v1.7.0 
h1:DycOqSXtw2q7aB+Nt9DDJUDtaYcrNPGn1t5RFposas0=
 github.com/resendlabs/resend-go v1.7.0/go.mod 
h1:yip1STH7Bqfm4fD0So5HgyNbt5taG5Cplc4xXxETyLI=
-github.com/rivo/uniseg v0.1.0/go.mod 
h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
-github.com/rivo/uniseg v0.2.0/go.mod 
h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
-github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
-github.com/rivo/uniseg v0.4.4/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
+github.com/rivo/uniseg v0.4.7/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f 
h1:MvTmaQdww/z0Q4wrYjDSCcZ78NoftLQyHBSLW/Cx79Y=
-github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f/go.mod 
h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod 
h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=
+github.com/sahilm/fuzzy v0.1.1/go.mod 
h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
+github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
+github.com/spf13/cobra v1.10.2/go.mod 
h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
+github.com/spf13/pflag v1.0.9/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
+github.com/spf13/pflag v1.0.10/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/testify v1.8.2 
h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/toorop/go-dkim v0.0.0-20201103131630-e1cd1a0a5208 
h1:PM5hJF7HVfNWmCjMdEfbuOBNXSVF2cMFGgQTPdKCbwM=
+github.com/stretchr/testify v1.8.2/go.mod 
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/toorop/go-dkim v0.0.0-20201103131630-e1cd1a0a5208/go.mod 
h1:BzWtXXrXzZUvMacR0oF/fbDDgUPO8L36tDMmRAf14ns=
-github.com/xhit/go-simple-mail/v2 v2.15.0 
h1:qMXeqcZErUW/Dw6EXxmPuxHzVI8MdxWnEnu2xcisohU=
-github.com/xhit/go-simple-mail/v2 v2.15.0/go.mod 
h1:b7P5ygho6SYE+VIqpxA6QkYfv4teeyG4MKqB3utRu98=
-github.com/yuin/goldmark v1.5.5 h1:IJznPe8wOzfIKETmMkd06F8nXkmlhaHqFRM9l1hAGsU=
-github.com/yuin/goldmark v1.5.5/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea 
h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4=
-golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod 
h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
-golang.org/x/term v0.10.0/go.mod 
h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
-golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
-golang.org/x/text v0.11.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+github.com/toorop/go-dkim v0.0.0-20250226130143-9025cce95817 
h1:q0hKh5a5FRkhuTb5JNfgjzpzvYLHjH0QOgPZPYnRWGA=
+github.com/toorop/go-dkim v0.0.0-20250226130143-9025cce95817/go.mod 
h1:BzWtXXrXzZUvMacR0oF/fbDDgUPO8L36tDMmRAf14ns=
+github.com/xhit/go-simple-mail/v2 v2.16.0 
h1:ouGy/Ww4kuaqu2E2UrDw7SvLaziWTB60ICLkIkNVccA=
+github.com/xhit/go-simple-mail/v2 v2.16.0/go.mod 
h1:b7P5ygho6SYE+VIqpxA6QkYfv4teeyG4MKqB3utRu98=
+github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e 
h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
+github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod 
h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
+github.com/yuin/goldmark v1.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE=
+github.com/yuin/goldmark v1.8.2/go.mod 
h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
+go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
+golang.org/x/exp v0.0.0-20231006140011-7918f672742d 
h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
+golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod 
h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
+golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
+golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
+golang.org/x/text v0.36.0/go.mod 
h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/go.work new/pop-0.2.1/go.work
--- old/pop-0.2.0/go.work       2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/go.work       1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-go 1.19
-
-use (
-       .
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/go.work.sum new/pop-0.2.1/go.work.sum
--- old/pop-0.2.0/go.work.sum   2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/go.work.sum   1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-github.com/toorop/go-dkim v0.0.0-20201103131630-e1cd1a0a5208 
h1:PM5hJF7HVfNWmCjMdEfbuOBNXSVF2cMFGgQTPdKCbwM=
-github.com/toorop/go-dkim v0.0.0-20201103131630-e1cd1a0a5208/go.mod 
h1:BzWtXXrXzZUvMacR0oF/fbDDgUPO8L36tDMmRAf14ns=
-github.com/xhit/go-simple-mail/v2 v2.15.0 
h1:qMXeqcZErUW/Dw6EXxmPuxHzVI8MdxWnEnu2xcisohU=
-github.com/xhit/go-simple-mail/v2 v2.15.0/go.mod 
h1:b7P5ygho6SYE+VIqpxA6QkYfv4teeyG4MKqB3utRu98=
-github.com/yuin/goldmark v1.5.4/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/yuin/goldmark v1.5.5 h1:IJznPe8wOzfIKETmMkd06F8nXkmlhaHqFRM9l1hAGsU=
-github.com/yuin/goldmark v1.5.5/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb 
h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us=
-golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod 
h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
-golang.org/x/term v0.10.0/go.mod 
h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
-golang.org/x/text v0.11.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/main.go new/pop-0.2.1/main.go
--- old/pop-0.2.0/main.go       2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/main.go       2026-04-28 16:16:02.000000000 +0200
@@ -1,6 +1,7 @@
 package main
 
 import (
+       "errors"
        "fmt"
        "io"
        "os"
@@ -42,7 +43,7 @@
 const PopSMTPPassword = "POP_SMTP_PASSWORD" //nolint:gosec
 
 // PopSMTPEncryption is the encryption type for the SMTP server if the user is 
using the SMTP delivery method.
-const PopSMTPEncryption = "POP_SMTP_ENCRYPTION" //nolint:gosec
+const PopSMTPEncryption = "POP_SMTP_ENCRYPTION"
 
 // PopSMTPInsecureSkipVerify is whether or not to skip TLS verification for the
 // SMTP server if the user is using the SMTP delivery method.
@@ -72,26 +73,41 @@
        Use:   "pop",
        Short: "Send emails from your terminal",
        Long:  `Pop is a tool for sending emails from your terminal.`,
-       RunE: func(cmd *cobra.Command, args []string) error {
+       RunE: func(cmd *cobra.Command, _ []string) error {
                var deliveryMethod DeliveryMethod
                switch {
+               case resendAPIKey != "" && smtpUsername != "" && smtpPassword 
!= "":
+                       deliveryMethod = Unknown
                case resendAPIKey != "":
                        deliveryMethod = Resend
                case smtpUsername != "" && smtpPassword != "":
                        deliveryMethod = SMTP
-                       from = smtpUsername
+                       if from == "" {
+                               from = smtpUsername
+                       }
                }
 
-               if deliveryMethod == None {
+               switch deliveryMethod {
+               case None:
                        fmt.Printf("\n  %s %s %s\n\n", 
errorHeaderStyle.String(), inlineCodeStyle.Render(ResendAPIKey), "environment 
variable is required.")
                        fmt.Printf("  %s %s\n\n", commentStyle.Render("You can 
grab one at"), linkStyle.Render("https://resend.com/api-keys";))
-                       return nil
+                       cmd.SilenceUsage = true
+                       cmd.SilenceErrors = true
+                       return errors.New("missing required environment 
variable")
+               case Unknown:
+                       fmt.Printf("\n  %s Unknown delivery method.\n", 
errorHeaderStyle.String())
+                       fmt.Printf("\n  You have set both %s and %s delivery 
methods.", inlineCodeStyle.Render(ResendAPIKey), 
inlineCodeStyle.Render("POP_SMPT_*"))
+                       fmt.Printf("\n  Set only one of these environment 
variables.\n\n")
+                       cmd.SilenceUsage = true
+                       cmd.SilenceErrors = true
+                       return errors.New("unknown delivery method")
+               case Resend, SMTP:
                }
 
-               if hasStdin() {
+               if body == "" && hasStdin() {
                        b, err := io.ReadAll(os.Stdin)
                        if err != nil {
-                               return err
+                               return fmt.Errorf("reading stdin: %w", err)
                        }
                        body = string(b)
                }
@@ -123,6 +139,8 @@
                p := tea.NewProgram(NewModel(resend.SendEmailRequest{
                        From:        from,
                        To:          to,
+                       Bcc:         bcc,
+                       Cc:          cc,
                        Subject:     subject,
                        Text:        body,
                        Attachments: makeAttachments(attachments),
@@ -130,7 +148,7 @@
 
                m, err := p.Run()
                if err != nil {
-                       return err
+                       return fmt.Errorf("running program: %w", err)
                }
                mm := m.(Model)
                if !mm.abort {
@@ -150,36 +168,13 @@
        // Version stores the build version of VHS at the time of package 
through
        // -ldflags.
        //
-       // go build -ldflags "-s -w -X=main.Version=$(VERSION)"
+       // go build -ldflags "-s -w -X=main.Version=$(VERSION)".
        Version string
 
        // CommitSHA stores the git commit SHA at the time of package through 
-ldflags.
        CommitSHA string
 )
 
-// CompletionCmd is the cobra command for generating completion scripts.
-var CompletionCmd = &cobra.Command{
-       Use:                   "completion [bash|zsh|fish|powershell]",
-       Short:                 "Generate completion script",
-       Long:                  `To load completions`,
-       DisableFlagsInUseLine: true,
-       ValidArgs:             []string{"bash", "zsh", "fish", "powershell"},
-       Args:                  cobra.MatchAll(cobra.ExactArgs(1), 
cobra.OnlyValidArgs),
-       RunE: func(cmd *cobra.Command, args []string) error {
-               switch args[0] {
-               case "bash":
-                       return rootCmd.GenBashCompletion(os.Stdout)
-               case "zsh":
-                       return rootCmd.GenZshCompletion(os.Stdout)
-               case "fish":
-                       return rootCmd.GenFishCompletion(os.Stdout, true)
-               case "powershell":
-                       return rootCmd.GenPowerShellCompletion(os.Stdout)
-               }
-               return nil
-       },
-}
-
 // ManCmd is the cobra command for the manual.
 var ManCmd = &cobra.Command{
        Use:    "man",
@@ -187,10 +182,10 @@
        Long:   `To generate the man page`,
        Args:   cobra.NoArgs,
        Hidden: true,
-       RunE: func(cmd *cobra.Command, args []string) error {
-               page, err := mcobra.NewManPage(1, rootCmd) // .
+       RunE: func(_ *cobra.Command, _ []string) error {
+               page, err := mcobra.NewManPage(1, rootCmd)
                if err != nil {
-                       return err
+                       return fmt.Errorf("generating man page: %w", err)
                }
 
                page = page.WithSection("Copyright", "© 2023 Charmbracelet, 
Inc.\n"+"Released under MIT License.")
@@ -200,7 +195,7 @@
 }
 
 func init() {
-       rootCmd.AddCommand(CompletionCmd, ManCmd)
+       rootCmd.AddCommand(ManCmd)
 
        rootCmd.Flags().StringSliceVar(&bcc, "bcc", []string{}, "BCC 
recipients")
        rootCmd.Flags().StringSliceVar(&cc, "cc", []string{}, "CC recipients")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/model.go new/pop-0.2.1/model.go
--- old/pop-0.2.0/model.go      2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/model.go      2026-04-28 16:16:02.000000000 +0200
@@ -23,6 +23,8 @@
 const (
        editingFrom State = iota
        editingTo
+       editingCc
+       editingBcc
        editingSubject
        editingBody
        editingAttachments
@@ -41,6 +43,9 @@
        Resend
        // SMTP uses an SMTP server to send an email.
        SMTP
+       // Unknown is set when the user has not chosen a single delivery method.
+       // i.e. multiple delivery methods are set.
+       Unknown
 )
 
 // Model is Pop's application model.
@@ -65,8 +70,9 @@
        // This is a list of file paths which are picked with a filepicker.
        Attachments list.Model
 
-       Cc  textinput.Model
-       Bcc textinput.Model
+       showCc bool
+       Cc     textinput.Model
+       Bcc    textinput.Model
 
        // filepicker is used to pick file attachments.
        filepicker     filepicker.Model
@@ -83,7 +89,6 @@
        from := textinput.New()
        from.Prompt = "From "
        from.Placeholder = "[email protected]"
-       from.PromptStyle = labelStyle.Copy()
        from.PromptStyle = labelStyle
        from.TextStyle = textStyle
        from.Cursor.Style = cursorStyle
@@ -92,16 +97,34 @@
 
        to := textinput.New()
        to.Prompt = "To "
-       to.PromptStyle = labelStyle.Copy()
+       to.PromptStyle = labelStyle
        to.Cursor.Style = cursorStyle
        to.PlaceholderStyle = placeholderStyle
        to.TextStyle = textStyle
        to.Placeholder = "[email protected]"
        to.SetValue(strings.Join(defaults.To, ToSeparator))
 
+       cc := textinput.New()
+       cc.Prompt = "Cc "
+       cc.PromptStyle = labelStyle
+       cc.Cursor.Style = cursorStyle
+       cc.PlaceholderStyle = placeholderStyle
+       cc.TextStyle = textStyle
+       cc.Placeholder = "[email protected]"
+       cc.SetValue(strings.Join(defaults.Cc, ToSeparator))
+
+       bcc := textinput.New()
+       bcc.Prompt = "Bcc "
+       bcc.PromptStyle = labelStyle
+       bcc.Cursor.Style = cursorStyle
+       bcc.PlaceholderStyle = placeholderStyle
+       bcc.TextStyle = textStyle
+       bcc.Placeholder = "[email protected]"
+       bcc.SetValue(strings.Join(defaults.Bcc, ToSeparator))
+
        subject := textinput.New()
        subject.Prompt = "Subject "
-       subject.PromptStyle = labelStyle.Copy()
+       subject.PromptStyle = labelStyle
        subject.Cursor.Style = cursorStyle
        subject.PlaceholderStyle = placeholderStyle
        subject.TextStyle = textStyle
@@ -169,6 +192,9 @@
                state:          state,
                From:           from,
                To:             to,
+               showCc:         len(cc.Value()) > 0 || len(bcc.Value()) > 0,
+               Cc:             cc,
+               Bcc:            bcc,
                Subject:        subject,
                Body:           body,
                Attachments:    attachments,
@@ -194,7 +220,7 @@
 type clearErrMsg struct{}
 
 func clearErrAfter(d time.Duration) tea.Cmd {
-       return tea.Tick(d, func(t time.Time) tea.Msg {
+       return tea.Tick(d, func(_ time.Time) tea.Msg {
                return clearErrMsg{}
        })
 }
@@ -210,7 +236,7 @@
                m.state = editingFrom
                m.focusActiveInput()
                m.err = msg
-               return m, clearErrAfter(5 * time.Second)
+               return m, clearErrAfter(10 * time.Second)
        case clearErrMsg:
                m.err = nil
        case tea.KeyMsg:
@@ -222,6 +248,14 @@
                                m.state = editingTo
                                m.To.Focus()
                        case editingTo:
+                               if m.showCc {
+                                       m.state = editingCc
+                               } else {
+                                       m.state = editingSubject
+                               }
+                       case editingCc:
+                               m.state = editingBcc
+                       case editingBcc:
                                m.state = editingSubject
                        case editingSubject:
                                m.state = editingBody
@@ -231,6 +265,7 @@
                                m.state = hoveringSendButton
                        case hoveringSendButton:
                                m.state = editingFrom
+                       case pickingFile, sendingEmail:
                        }
                        m.focusActiveInput()
 
@@ -241,14 +276,23 @@
                                m.state = hoveringSendButton
                        case editingTo:
                                m.state = editingFrom
-                       case editingSubject:
+                       case editingCc:
                                m.state = editingTo
+                       case editingBcc:
+                               m.state = editingCc
+                       case editingSubject:
+                               if m.showCc {
+                                       m.state = editingBcc
+                               } else {
+                                       m.state = editingTo
+                               }
                        case editingBody:
                                m.state = editingSubject
                        case editingAttachments:
                                m.state = editingBody
                        case hoveringSendButton:
                                m.state = editingAttachments
+                       case pickingFile, sendingEmail:
                        }
                        m.focusActiveInput()
 
@@ -283,6 +327,12 @@
        cmds = append(cmds, cmd)
        m.To, cmd = m.To.Update(msg)
        cmds = append(cmds, cmd)
+       if m.showCc {
+               m.Cc, cmd = m.Cc.Update(msg)
+               cmds = append(cmds, cmd)
+               m.Bcc, cmd = m.Bcc.Update(msg)
+               cmds = append(cmds, cmd)
+       }
        m.Subject, cmd = m.Subject.Update(msg)
        cmds = append(cmds, cmd)
        m.Body, cmd = m.Body.Update(msg)
@@ -304,6 +354,7 @@
        case sendingEmail:
                m.loadingSpinner, cmd = m.loadingSpinner.Update(msg)
                cmds = append(cmds, cmd)
+       case editingFrom, editingTo, editingCc, editingBcc, editingSubject, 
editingBody, hoveringSendButton:
        }
 
        m.help, cmd = m.help.Update(msg)
@@ -317,8 +368,18 @@
        m.To.Blur()
        m.Subject.Blur()
        m.Body.Blur()
+       if m.showCc {
+               m.Cc.Blur()
+               m.Bcc.Blur()
+       }
        m.From.PromptStyle = labelStyle
        m.To.PromptStyle = labelStyle
+       if m.showCc {
+               m.Cc.PromptStyle = labelStyle
+               m.Cc.TextStyle = textStyle
+               m.Bcc.PromptStyle = labelStyle
+               m.Bcc.TextStyle = textStyle
+       }
        m.Subject.PromptStyle = labelStyle
        m.From.TextStyle = textStyle
        m.To.TextStyle = textStyle
@@ -339,6 +400,16 @@
                m.To.TextStyle = activeTextStyle
                m.To.Focus()
                m.To.CursorEnd()
+       case editingCc:
+               m.Cc.PromptStyle = activeLabelStyle
+               m.Cc.TextStyle = activeTextStyle
+               m.Cc.Focus()
+               m.Cc.CursorEnd()
+       case editingBcc:
+               m.Bcc.PromptStyle = activeLabelStyle
+               m.Bcc.TextStyle = activeTextStyle
+               m.Bcc.Focus()
+               m.Bcc.CursorEnd()
        case editingSubject:
                m.Subject.PromptStyle = activeLabelStyle
                m.Subject.TextStyle = activeTextStyle
@@ -350,6 +421,7 @@
        case editingAttachments:
                m.Attachments.Styles.Title = activeLabelStyle
                m.Attachments.SetDelegate(attachmentDelegate{true})
+       case hoveringSendButton, pickingFile, sendingEmail:
        }
 }
 
@@ -365,6 +437,7 @@
                        "\n\n" + m.filepicker.View()
        case sendingEmail:
                return "\n " + m.loadingSpinner.View() + "Sending email"
+       case editingFrom, editingTo, editingCc, editingBcc, editingSubject, 
editingBody, editingAttachments, hoveringSendButton:
        }
 
        var s strings.Builder
@@ -373,6 +446,12 @@
        s.WriteString("\n")
        s.WriteString(m.To.View())
        s.WriteString("\n")
+       if m.showCc {
+               s.WriteString(m.Cc.View())
+               s.WriteString("\n")
+               s.WriteString(m.Bcc.View())
+               s.WriteString("\n")
+       }
        s.WriteString(m.Subject.View())
        s.WriteString("\n\n")
        s.WriteString(m.Body.View())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pop-0.2.0/style.go new/pop-0.2.1/style.go
--- old/pop-0.2.0/style.go      2023-08-01 14:32:31.000000000 +0200
+++ new/pop-0.2.1/style.go      2026-04-28 16:16:02.000000000 +0200
@@ -1,3 +1,4 @@
+// Package main implements Pop, a tool for sending emails from your terminal.
 package main
 
 import (
@@ -6,12 +7,14 @@
        "github.com/charmbracelet/lipgloss"
 )
 
-const accentColor = lipgloss.Color("99")
-const yellowColor = lipgloss.Color("#ECFD66")
-const whiteColor = lipgloss.Color("255")
-const grayColor = lipgloss.Color("241")
-const darkGrayColor = lipgloss.Color("236")
-const lightGrayColor = lipgloss.Color("247")
+const (
+       accentColor    = lipgloss.Color("99")
+       yellowColor    = lipgloss.Color("#ECFD66")
+       whiteColor     = lipgloss.Color("255")
+       grayColor      = lipgloss.Color("241")
+       darkGrayColor  = lipgloss.Color("236")
+       lightGrayColor = lipgloss.Color("247")
+)
 
 var (
        activeTextStyle = lipgloss.NewStyle().Foreground(whiteColor)

++++++ vendor.tar.gz ++++++
++++ 100781 lines of diff (skipped)

Reply via email to