Skip to content

feat(frontend): URLプレビューでsummary_large_image形式の大きいカード表示に対応#17392

Open
chan-mai wants to merge 18 commits into
misskey-dev:developfrom
chan-mai:feat/url-preview-large-image-card
Open

feat(frontend): URLプレビューでsummary_large_image形式の大きいカード表示に対応#17392
chan-mai wants to merge 18 commits into
misskey-dev:developfrom
chan-mai:feat/url-preview-large-image-card

Conversation

@chan-mai
Copy link
Copy Markdown
Contributor

What

リンクプレビューで twitter:card = summary_large_image 相当の大きいカード表示に対応する。

変更内容:

  • @misskey-dev/summaly を 5.3.0 → 5.4.0 に更新。summaly が thumbnailStyle: 'summary' | 'summary_large_image' | null を返すようになった (misskey-dev/summaly#66)
  • MkUrlPreview.vuethumbnailStyle === 'summary_large_image' のとき、サムネイルを上部全幅 (16:9) で表示する大きいカードレイアウトに切り替える。画像は元解像度で取得する(preview=1 パラメータを除去)
  • ユーザー設定「URLプレビューを常にコンパクト表示にする」を追加(環境設定 > タイムラインとノート)。オンにすると summary_large_image 指定があっても従来の小さいカードで表示する

Before / After:

Before After
どんなリンクも一律で左 100px サムネイル + 本文の小さいカード summary_large_image 指定のリンクは上部全幅サムネイル + 本文の大きいカードで表示

Why

現行の実装はリンク先の種別に関わらず一律で同じ小さなカードに収束してしまい、リンク先ごとの性質を反映した見せ方ができない。twitter:card = summary_large_image にフォールバックする形であれば、既に OGP を整備しているサイトに追加対応を求めずに恩恵を出せる。

Related: #17391

Additional info (optional)

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

@github-actions github-actions Bot added packages/frontend Client side specific issue/PR packages/backend Server side specific issue/PR labels May 11, 2026
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

このPRによるapi.jsonの差分
差分はありません。
Get diff files from Workflow Page

@codecov
Copy link
Copy Markdown

codecov Bot commented May 11, 2026

Codecov Report

❌ Patch coverage is 34.37500% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 22.48%. Comparing base (c864349) to head (122f940).

Files with missing lines Patch % Lines
packages/frontend/src/components/MkUrlPreview.vue 39.13% 12 Missing and 2 partials ⚠️
packages/frontend-shared/js/media-proxy.ts 0.00% 4 Missing ⚠️
.../backend/src/server/file/FileServerProxyHandler.ts 66.66% 1 Missing ⚠️
packages/frontend/src/components/MkLink.vue 0.00% 1 Missing ⚠️
packages/frontend/src/components/MkNote.vue 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #17392      +/-   ##
===========================================
+ Coverage    15.27%   22.48%   +7.20%     
===========================================
  Files          247     1158     +911     
  Lines        12338    39453   +27115     
  Branches      4178    10985    +6807     
===========================================
+ Hits          1885     8871    +6986     
- Misses        8188    24565   +16377     
- Partials      2265     6017    +3752     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

Backend memory usage comparison

Before GC

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 304.85 MB 308.90 MB +4.04 MB +1.32%
VmHWM 304.85 MB 308.90 MB +4.04 MB +1.32%
VmSize 23169.94 MB 23174.79 MB +4.84 MB +0.02%
VmData 1369.96 MB 1373.81 MB +3.84 MB +0.28%

After GC

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 304.94 MB 308.90 MB +3.96 MB +1.30%
VmHWM 304.94 MB 308.90 MB +3.96 MB +1.30%
VmSize 23170.03 MB 23174.79 MB +4.76 MB +0.02%
VmData 1370.05 MB 1373.81 MB +3.76 MB +0.27%

After Request

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 305.30 MB 309.41 MB +4.10 MB +1.34%
VmHWM 305.30 MB 309.41 MB +4.10 MB +1.34%
VmSize 23170.03 MB 23175.04 MB +5.01 MB +0.02%
VmData 1370.13 MB 1374.06 MB +3.93 MB +0.28%

See workflow logs for details

@syuilo
Copy link
Copy Markdown
Member

syuilo commented May 12, 2026

スクリーンショットなどあれば助かります 🙏🏻

@chan-mai
Copy link
Copy Markdown
Contributor Author

このような表示になります!

image

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

kakkokari-gtyih commented May 12, 2026

preview外した場合でも画像の縮小ってされてたかしら
サイト管理者がog imageにGIFを貼っていたり、解像度のめちゃくちゃでかい画像を貼っていた場合にあれかもしれない

画像プロキシに thumbnail オプションを生やして1280x720くらいに縮小してGIF解除して返す(or DriveFile.thumbnailUrlと同等の圧縮・サイズ変更を掛ける)と良いのかも

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

あとMkUrlPreviewPopupでは強制的にsummary相当で出すようにする必要がありそう

@poppingmoon
Copy link
Copy Markdown
Contributor

リンクが複数あるときの表示が気になります
TwitterやBlueskyではリンクが複数あってもカードは1つしか表示されませんが、Misskeyではすべてのリンクに対してプレビューが表示されるので、かなり大きな面積を占めることになるのではないかと思います

現在の実装では、リンクが4つ以上あるノートは折りたたまれることになっていますが、この条件についても考える必要がありそうです

if (urls.length >= 4) {
return true;
}

@chan-mai
Copy link
Copy Markdown
Contributor Author

リンクが複数あるときの表示が気になります
TwitterやBlueskyではリンクが複数あってもカードは1つしか表示されませんが、Misskeyではすべてのリンクに対してプレビューが表示されるので、かなり大きな面積を占めることになるのではないかと思います
現在の実装では、リンクが4つ以上あるノートは折りたたまれることになっていますが、この条件についても考える必要がありそうです

Twitter同様、先頭のURLのみ埋め込み、残りはリンクテキストとしたほうがいいんでしょうか?

@poppingmoon
Copy link
Copy Markdown
Contributor

[]()?[]() が別々にあることを考えると、リンクを貼ったのにプレビューが出ない(ことがある)というのはあまり好まれないかもしれないと思いました

対案としては、リンクが一定数以上あるときはすべて細くするとか、カルーセルにしてスワイプできるようにするとかは思いつきました

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

kakkokari-gtyih commented May 12, 2026

プレビュー対象になるリンクが2件以上の場合はsummary相当にするのが丸い気がしなくもない
あと添付メディアがあって、かつプレビュー対象のリンクが1つでもある場合もsummary相当になるか

@chan-mai
Copy link
Copy Markdown
Contributor Author

一旦2件以上の場合はsummary相当になる形で実装してみます🙌🏻

@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels May 12, 2026
@chan-mai
Copy link
Copy Markdown
Contributor Author

image

とりあえずこんな感じになりました

@chan-mai
Copy link
Copy Markdown
Contributor Author

ああsubmoduleでCIコケちゃった
なおします

@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels May 12, 2026
@dosubot dosubot Bot removed the size:M This PR changes 30-99 lines, ignoring generated files. label May 12, 2026
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label May 12, 2026
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels May 12, 2026
@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

  • リンクホバー時のプレビュー(強制summary相当)
  • メディア添付+リンク1つの時の挙動(強制summary相当)

@poppingmoon
Copy link
Copy Markdown
Contributor

ダイレクトメッセージも同様にしたほうがいいと思います

<MkUrlPreview v-for="url in urls" :key="url" :url="url" style="margin: 8px 0;"/>

@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels May 12, 2026
@chan-mai
Copy link
Copy Markdown
Contributor Author

  • リンクホバー時のプレビュー
  • メディア + URL単体
    を追加
  • ダイレクトメッセージでも同様の振る舞いをするように変更
    しました
image image

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

kakkokari-gtyih commented May 13, 2026

もろもろ調整した


  • OGP画像の拡大表示時の画像縦横比は16:9ではなく1.91:1なのでそちらに変更
  • ホバー時のURLプレビューは常にコンパクトに

@kakkokari-gtyih kakkokari-gtyih requested a review from syuilo May 13, 2026 02:18
@poppingmoon
Copy link
Copy Markdown
Contributor

プレイヤーを開くとカードは消えるのでコンパクトにしなくてもいいと思います

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

コンフリクト解消

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

コンフリクト解消

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

プレイヤーを開くとカードは消えるのでコンパクトにしなくてもいいと思います

たいおうしました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages/backend Server side specific issue/PR packages/frontend Client side specific issue/PR size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Development

Successfully merging this pull request may close these issues.

feat: summary_large_image相当の大きいカード表示がほしい

4 participants