カスタムヘッダーリンクがMatrixのURLを拒否します

3.4にアップデートした際、https://matrix.to/#/#matrix-meta-chat:fedoraproject.orgのようなMatrixリンクが原因で、カスタムヘッダーリンクのテーマコンポーネントが更新されませんでした。エラーメッセージは「JSON Pointer '/3/url' のプロパティは有効なURLでなければなりません。」でした。

このリンクを削除すると、アップデートは正常に行われましたが、リンクを元に戻すことは不可能でした。

(回避策:https://matrix.to/#/#matrix-meta-chat:fedoraproject.orgにリダイレクトするパーマリンク /matrix を作成し、カスタムヘッダーリンクとして /matrix を追加します。)

それでも、もう少し柔軟性を持たせた方が良いかもしれません。このリンク形式は、パーマリンクとしては問題ないようです。

「いいね!」 3

二重の「#」により、コア(このTC自体ではありません)でオブジェクト設定の検証が失敗します。

無効なURI(URIではありませんか?): "https://matrix.to/#/#matrix-meta-chat:fedoraproject.org" (URI::InvalidURIError)

厳密には有効なURIではないため、フラグメントをエンコードする必要があります。
ここで、https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org を使用すると機能します。

コードを確認すると:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url はここで定義されています:

この状況に対処するための別の関数が既に存在し、他の場所でも使用されていることがわかります:

テーマオブジェクトのURL検証に relaxed_parse を使用するのは妥当だと思います。
例:if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

「いいね!」 6