Summary
gws gmail +send always prints the tip Tip: run gws auth login and grant the "profile" scope to include your display name in the From header, and sends emails with a null display name in the From field — even when the userinfo.profile scope is already granted.
Steps to Reproduce
- Authenticate with profile scope:
- Confirm profile scope is present in the auth response:
{
"scopes": [
"https://www.googleapis.com/auth/gmail.modify",
"openid",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile"
]
}
- Send an email:
gws gmail +send --to "yourself@example.com" --subject "test" --body "Testing from header"
- Observe the tip is still printed to stderr.
- Read the sent message:
gws gmail +read --id <message_id> --format json
- Observe
from.name is null:
{
"from": {
"name": null,
"email": "user@example.com"
}
}
Expected Behavior
- The tip should not appear when the profile scope is already granted.
- The From header should include the user's display name (fetched via the People/UserInfo API using the granted profile scope).
Actual Behavior
- The tip prints unconditionally on every
+send invocation.
- The From name is always null regardless of granted scopes.
Environment
- gws version: 0.22.3
- OS: macOS 15.7.5 (arm64 / Apple Silicon)
- Node: v20.18.2
- Keyring backend: keyring (OS keychain)
- Account type: Google Workspace (enterprise)
Summary
gws gmail +sendalways prints the tipTip: run gws auth login and grant the "profile" scope to include your display name in the From header, and sends emails with a null display name in the From field — even when theuserinfo.profilescope is already granted.Steps to Reproduce
{ "scopes": [ "https://www.googleapis.com/auth/gmail.modify", "openid", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile" ] }from.nameisnull:{ "from": { "name": null, "email": "user@example.com" } }Expected Behavior
Actual Behavior
+sendinvocation.Environment