[bug]: Email notifications show a broken avatar for users without a profile photo
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
apps/api/plane/bgtasks/email_notification_task.py にある 3 つの avatar_url の代入(200、213、227 行目付近)から始めてください。これらは、アクターにアバターがない場合でも API のベース URL を前置しています。次に templates/emails/notifications/issue-updates.html の {% if update.actor_detail.avatar_url %} の分岐(53 行目と 194 行目)を確認してください。写真のないアクターに空のアバター値が設定され、テンプレートが壊れた画像ではなくイニシャルを表示するようになれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Current behavior
In email notifications, the avatar for anyone without a profile photo is a broken image. The initial fallback in the template never shows.
apps/api/plane/bgtasks/email_notification_task.py (lines 200, 213 and 227 on preview) builds the URL as:
"avatar_url": f"{base_api}{actor.avatar_url}",
When the user has no avatar, actor.avatar_url is None (or ""), so the value becomes https://<host>/None (or just https://<host>). That string is truthy, so {% if update.actor_detail.avatar_url %} in templates/emails/notifications/issue-updates.html (lines 53 and 194) always takes the <img> branch, and the {% else %} initial is never used. https://<host>/None returns the web app's HTML, so mail clients show a broken image.
Expected behavior
Users without a photo show the initial, as the template intends.
Suggested fix
Only prefix when there is an avatar, in all three places:
"avatar_url": f"{base_api}{actor.avatar_url}" if actor.avatar_url else "",
Steps to reproduce
- Self-hosted instance with email notifications on.
- A user with no profile photo comments on or updates a work item.
- Another member gets the notification email: the actor's avatar is a broken image pointing to
https://<host>/None.
Environment
Self-hosted (Docker images built from the current release), seen October 2026.
- 主要言語
- TypeScript
- スター
- 60.7k
- フォーク
- 6k
- 平均マージ
- 22時間 10分
- マージ済み PR(30日)
- 33
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
makeplane/plane のほかの issue
-
🐛 Bug: Calendar work items cannot be opened on mobile対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
[bug]: First day of the week section not translated when Idioma is Español対応中かも @deepcfr が 5 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
makeplane/plane#9967 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[bug]: First day of the week section not translated when Idioma is Español対応中かも @Indira-kumar が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
[bug]: Analytics "Last 7 / 30 days" windows cover one day too many対応中かも @manaskumar3003 が 30 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
makeplane/plane#9830 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[feature]: Merge duplicate "Settings" and "Preferences" entries in the user avatar menu対応中かも @rudrag1410 が 14 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
makeplane/plane#9793 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
makeplane/plane の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
wormhole-foundation/wormhole#5062 ·
メンテナーはふだん 1 日以内に返信
-
internal os specific
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
frostney/GocciaScript#1688 ·
メンテナーはふだん 1 日以内に返信
-
integration:hermes
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
vectorize-io/hindsight#5592 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
vercel/streamdown#673 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
apache/rocketmq-dashboard#6712 ·
メンテナーはふだん 3 日以内に返信