Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CW付きノートの注釈がHTMLにパースされないまま連合される #15267

Open
1 task
YTJVDCM opened this issue Jan 13, 2025 · 3 comments
Open
1 task
Labels
🐛Bug Unexpected behavior 🌌Federation The Federation/ActivityPub feature packages/backend Server side specific issue/PR

Comments

@YTJVDCM
Copy link

YTJVDCM commented Jan 13, 2025

💡 Summary

CW付きノートを投稿した際、非Misskey相手に注釈のMFMが元のMFM構文そのままの状態で連合される

🥰 Expected Behavior

Misskey上ではCW付きノートのスポイラーアラートにもMFMが適用され表示されます。
そのため、MastodonなどのMFMに対応しない非Misskeyクライアント相手に対しては、通常のノート同様に部分的にHTMLにパースされたテキスト形式で連合されるのが適切と考えられます。

MFMが使用された通常ノートにおけるMisskey上での表示

Image

同投稿のMastodon上での表示

Image

🤬 Actual Behavior

しかし現行(2024.11.0)の実装においてはCWの注釈はパースされないまま連合され、非Misskeyクライアントに対してはMFMで書かれた構文がそのまま連合されてしまいます
(注釈ではない本文部分は正常にパースされた状態で連合されます)

MFMが用いられたCWのスポイラーアラートのMisskey上での表示

Image

同投稿のMastodon上での表示

Image

📝 Steps to Reproduce

  1. CW付き投稿を注釈にMFM構文が入った状態で投稿(Misskey上ではMFMが適用された状態で表示される)
  2. Mastodon等の非Misskeyクライアントに対しては元のMFM構文がそのまま連合される

💻 Frontend Environment

* Model and OS of the device(s): Arch Linux x86_64 6.12.9-arch1-1
* Browser: Firefox 134.0
* Server URL: https://virtualkemomimi.net/
(This also happened on other Misskey servers)
* Misskey: 2024.11.0

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service:
* Misskey:
* Node:
* PostgreSQL:
* Redis:
* OS and Architecture:

Do you want to address this bug yourself?

  • Yes, I will patch the bug myself and send a pull request
@YTJVDCM YTJVDCM added the ⚠️bug? This might be a bug label Jan 13, 2025
@KisaragiEffective KisaragiEffective added 🐛Bug Unexpected behavior packages/backend Server side specific issue/PR 🌌Federation The Federation/ActivityPub feature and removed ⚠️bug? This might be a bug labels Jan 13, 2025
@sakuhanight
Copy link
Contributor

この辺だと思うけど、_misskey_summaryを生やして使うようにする必要がある……?
段階的に移行しないといけない気がする

const summary = note.cw === '' ? String.fromCharCode(0x200B) : note.cw;

summary: summary ?? undefined,
content: content ?? undefined,
...(noMisskeyContent ? {} : {
_misskey_content: text,
source: {
content: text,
mediaType: 'text/x.misskeymarkdown',
},
}),

@sakuhanight
Copy link
Contributor

あとこのへん

const cw = note.summary === '' ? null : note.summary;

テキストのパースを参考にmisskeyとそれ以外を使い分けるようにする必要がある

// テキストのパース
let text: string | null = null;
if (note.source?.mediaType === 'text/x.misskeymarkdown' && typeof note.source.content === 'string') {
text = note.source.content;
} else if (typeof note._misskey_content !== 'undefined') {
text = note._misskey_content;
} else if (typeof note.content === 'string') {
text = this.apMfmService.htmlToMfm(note.content, note.tag);
}

@sakuhanight
Copy link
Contributor

これに関しては、MisskeyがCWにMFMを使用する実装となっているため、バグというより仕様と捉えて、仕様変更を検討する方向とした方がよさそうに思います
(前後バージョン間の互換性を考慮する必要がある)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior 🌌Federation The Federation/ActivityPub feature packages/backend Server side specific issue/PR
Projects
Development

No branches or pull requests

3 participants