Discourse 2.4.0.beta3 リリースノート

2.4.0.beta3 の新機能

robots.txt のカスタマイズ許可

この機能により、管理者は /admin/customize/robotsrobots.txt ファイルの内容をカスタマイズまたは上書きできるようになります。このページは UI 内のどこにもリンクされていません。管理者は URL を手動で入力してアクセスする必要があります。

一括招待で最大 200 通のメールを 1 分間に送信

注意: invite.via_email は非推奨となり、代わりに invite.emailed_status が使用されます。

このコミットにより、メール送信ステータスを追跡するために invites テーブルに新しいカラム emailed_status が追加されました。

 0 - 不要
 1 - 保留中
 2 - 一括保留中
 3 - 送信中
 4 - 送信済み
  • 通常のメール招待の場合、招待レコードは emailed_status が ‘pending’ に設定されて作成されます。
  • 一括招待が送信される場合、招待レコードは emailed_status が ‘bulk pending’ に設定されて作成されます。
  • リンクを生成する招待の場合、招待レコードは emailed_status が ‘not required’ に設定されて作成されます。
  • 招待メールがキューに入ると emailed_status は ‘sending’ に更新されます。
  • InviteEmail ジョブを通じてメールが送信されると、招待の emailed_status は ‘sent’ に更新されます。

招待の交換時の外部認証

この機能(有効化された場合)は、invite_only サイトが招待を交換する前に外部認証を要求することを可能にします。

  • この機能を切り替えるための非表示のサイト設定が作成されました
  • ローカルログインが無効化された状態での招待送信を可能にします
  • 招待フォームに OAuth ボタンが追加されました
  • OAuth のメールアドレスが招待のメールアドレスと一致している必要があります
  • OAuth 認証に失敗した場合、招待の交換を防止します

PM を公開する際のカテゴリ選択の許可

以前はデフォルトで 未分類 でしたが、一部のフォーラムでは適切ではありませんでした。現在、スタッフメンバーは PM をどのカテゴリに移動するかを即座に決定できます。

審査待ちの投稿に対する生メールの閲覧許可

投稿がメールで到着したが審査が必要な場合、メールの生内容を表示するためにクリックできるアイコンが表示されるようになりました。

これは、Discourse のメールパーサーが異常に動作している場合や、投稿を審査するユーザーが承認/却下する前に元のコンテンツを知りたい場合に役立ちます。

監視ワードの改善

今回のリリースで新しい機能が追加されました。

新しいボタンが 2 つあります。1 つ目は管理者がアクションごとの監視ワードを .txt ファイルとしてダウンロードできるもので、2 つ目はアクションごと(ブロック、フラグなど)に削除されたワードをすべてクリアするものです。さらに、1 つ以上のブロックされたワードを含むために投稿が却下された場合、エラーメッセージには投稿に含まれるすべてのブロックされたワードがリストされるようになりました。

なお、この新機能により、監視ワードをインポートするためのファイル形式が .csv から .txt に変更され、監視ワードをエクスポートする際のファイル拡張子と一致しなくなっています。

HTML メールのカスタマイズ

この機能により、カスタム HTML テンプレートと、必要に応じてスタイルを設定するための CSS を使用して、すべてのメールの HTML 部分をカスタマイズできるようになりました。CSS はメールクライアントでのサポートが不十分なため、パースされてインラインスタイルに変換されます。カスタム HTML と CSS を記述する際は、どのメールクライアントがサポートしているかに注意してください。カスタマイズは非常にシンプルに保ってください

カスタマイズは「管理 > カスタマイズ > メールスタイル」から追加および編集できます。

サマリーメールはすでにスタイル設定が大幅に行われているため、サマリーメールにカスタムスタイルを適用しないための設定 apply custom styles to digest が「管理 > 設定 > メール」にあります。

この作業の一環として、RTL ロケールがすべてのメールで正しくレンダリングされるようになりました。

「About」ページにカテゴリモデレーターの一覧を表示

Category Group Review/Moderation の機能に関する新しいアップデートです。今後は、カテゴリモデレーターがスタッフメンバーとともに、サイトの「About」ページに表示されるようになります。

グループメンバーの表示レベルのサポート追加とメンバーがグループに承認された際の通知送信

グループの表示管理に関するもう一つの追加機能です。現在、グループの表示レベルと同様に 5 つの表示レベルがあります。

  • public(デフォルト)
  • ログインユーザー
  • メンバーのみ
  • スタッフ
  • オーナー

管理者とグループオーナーは常にグループメンバーを表示できます。

また、今後はユーザーがグループに承認された際に通知が送信されるようになります。

JavaScript API を通じたリモートサイトへのトピック一覧の埋め込み

この機能により、Discourse のトピック一覧としてレンダリングされる <d-topics-list> タグのサポートが追加されました。タグの属性はすべてフィルターとして渡されます。例えば:

<d-topics-list discourse-url="URL" category="1234"> はカテゴリ 1234 にフィルターを適用します。

この機能を使用するには、「embed topics list」サイト設定を有効にしてください。次に、埋め込みたいサイトには以下の JavaScript を含めてください。

<script src="http://URL/javascripts/embed-topics.js"></script>

ここで URL は Discourse フォーラムの URL です。

その後、HTML ドキュメントに <d-topics-list discourse-url="URL"> タグを含めると、それがトピック一覧に置き換えられます。

詳細については Embedding a list of Discourse Topics in another site を参照してください。

ユーザー通知用のウェブフックの追加

有効化された場合、ユーザーの通知が作成されるたびにウェブフックが発火します。フォーラムの規模によっては大量のデータになる可能性があるため、すべてのユーザーがフィードで表示する内容が含まれるため、慎重に使用する必要があります。

theme_uploads を JavaScript 内の設定として扱う機能と、テーマによる JS ファイルのアセットアップロードの許可

これらはテーマに関する他の改善点です。1 つ目はテーマとコンポーネントがテーマアセットにアクセスできるようにするものです。つまり、テーマ内の JS 内で以下のコードを使ってアセットの URL を取得できるようになりました。

settings.theme_uploads.name

2 つ目の改善点は、テーマがより大きな JS ペイロードの読み込みを遅延させる機能を解放するものです。テーマはすでにインライン JS を含めることが許可されているため、この変更は安全です。

iOS/Android ネイティブアプリとのリンクのためのサイト設定と PWA インストールプロンプトの Discourse UI への組み込み

今回のリリースでは、Android および iOS アプリ向けの新機能も追加されました。

現在、apple-app-site-association エンドポイントを介した iOS ユニバーサルリンクのサポートと、.well-known/assetlinks.json エンドポイントを介した Google Digital Asset Links のサポートを追加するための 2 つの新しいサイト設定があります。

さらに、ネイティブインストールの「ミニ情報」バーが表示されるのを防ぎ、それがポップアップするイベントをキャプチャし、ユーザーが現在の基準(現在は信頼レベル 1)を満たすまで遅延させるようにしました。

イベントが発生し、ユーザーが基準を満たした場合、インストールを提案する Discourse のアラートバナーが表示されます。バナーの閉じる操作は記録されるため、同じデバイスではユーザーが二度と邪魔されなくなります。

Discord でのログイン

discourse-plugin-discord-auth の機能をコアに追加しました。プラグインはコアが更新された際に自動的に無効化されます。詳細は discourse/discourse-plugin-discord-auth@fd08678?w=1 を参照してください。

セットアップ手順については Configure Discord Login for Discourse をご覧ください。

匿名キャッシュのパフォーマンス改善

パフォーマンスを向上させるための 2 つの新機能です。

  • DISCOURSE_COMPRESS_ANON_CACHE (true|false、デフォルトは false): Redis 内の匿名キャッシュのボディエントリをオプションで圧縮できます。Redis が Web サーバーとは別のサーバーに存在する高負荷サイトにとって有用です。
  • DISCOURSE_ANON_CACHE_STORE_THRESHOLD(デフォルトは 2): エントリを Redis に格納するのは、N 回以上観測された場合のみです。これにより、クローラーが大量のトピックを巡回してそれらをすべて Redis に格納し、二度と使用されないという状況を回避できます。トピックのデフォルトの匿名キャッシュ時間はわずか 60 秒です。匿名キャッシュは、1 分で 100 人以上のユーザーが単一のトピックにアクセスする「スラッシュドット効果」を回避するために存在します。
「いいね!」 26

さらに更多!

でも、まだあります!私たちは新しい機能や変更をできる限りお知らせしていますが、すべてを詳細に説明するのは不可能です。新しい機能、バグ修正、UX の改善などの完全なリストについては、以下に記載されている「追加機能と修正」をご確認ください。

セキュリティ更新

このベータ版には、コミュニティおよび HackerOne から報告された 10 のセキュリティ問題に対する修正が含まれています。

  • 認証プロバイダー経由でアカウントを有効化する際、パスワードをリセット
  • クエリ文字列に CSRF トークンを送信しない
  • nokogiri のバージョンをアップグレード
  • 匿名 JS エラー報告にレート制限を追加
  • アクセス権のないユーザーにカテゴリの詳細を公開しない
  • login_required サイトでの message-bus アクセスを制限
  • OmniAuth リクエストフェーズで CSRF トークン付きの POST を必須化
  • ミューテックスキーとして使用するメール ID をサニタイズ
  • 関連アカウントを接続する際の確認画面を追加
  • バックアップチャンク識別子の検証

プラグインの改善

Discourse Cakeday

  • 翻訳の更新

Discourse Checklist

  • 翻訳の更新

Discourse Math

  • 翻訳の更新

Discourse Saved Searches

  • 翻訳の更新

Discourse Policy

  • 廃止されたアイコンの更新

Discourse Invite Token

  • 修正:invite.via_email は廃止され、invite.emailed_status に置き換わりました

Discourse User Notes

  • 翻訳の更新
  • 廃止されたアイコン名の更新
  • package.json の削除
  • ユーザーノートへの名称変更を反映するため、設定名と readme の更新
  • README.md の更新
  • 修正:データベース内のサイト設定名も変更
  • 修正:正しいパスを使用
  • 開発:ファイル、関数、DB エントリの名称変更、および 2 つの小さな修正

Discourse Translator

  • Microsoft API の言語コードとして zh-Hans と zh-Hant を使用
  • 修正:Microsoft 翻訳で HTML オプションを使用
  • 仕様の修正

Discourse Steam Login

  • Rubocop のエラーを解消

Discourse Amazon Login

  • 修正:Amazon がメールアドレスを検証
  • Rubocop のエラーを解消

Discourse Canned Replies

  • 翻訳の更新
  • 廃止されたアイコン名の更新
  • リファクタリング:軽微なリファクタリング/フォーマット
  • 開発:sendAction の非廃止を削除
  • 修正:モバイルでの返信編集モーダルの高さを制限

Discourse Oauth2 Basic

  • 翻訳の更新
  • 機能:ManagedAuthenticator への移行
  • 修正:旧データの移行時に重複する user_ids を無視
  • Rubocop のエラーを解消
  • 修正:旧データ形式からの移行時に数値以外の値を無視

Discourse Chat Integration

  • 翻訳の更新
  • 廃止されたアイコン名の更新
  • 修正:トランスクリプトパラメータへの正しいアクセス
  • 修正:未定義のローカル変数またはメソッド site_setting_saved
  • 修正:“skip_messages” より少ないメッセージが存在するとエラーが発生していた問題を修正

Discourse Graphviz

  • decorateCooked API 呼び出しに ID を追加
  • 修正:有効な場合のみプラグインを登録
  • 修正:無効な場合は処理を行わない
  • 修正:プレビューで複数のグラフをレンダリング可能に
  • 修正:グラフ定義からコメントを自動削除
  • 修正:グラフ定義に空白行を許可
  • 機能:svg=true を使用して Graphviz に画像変換を回避させる
  • 機能:SVG を実際の SVG としてレンダリングし、インラインに置換

Discourse Tooltips

  • リファクタリング:this.$() パターンの削除
  • パフォーマンス:ツールチップに 3 分間の匿名キャッシュを有効化
  • 機能:リクエストがキューイングされている際のレート制限サポートを追加

Discourse Signatures

  • 開発:署名を有効化するために再起動を不要化
  • 修正:このプラグイン固有のユーザーカスタムフィールドのみをシリアライズ

Discourse Patreon

  • 翻訳の更新
  • 廃止されたアイコンの更新
  • 修正:パトロングループまたはバッジが既に存在する際のエラーを防止
  • ファイルの lint

Discourse Code Review

  • 廃止されたアイコンの更新
  • Sam からのフィードバックに基づく変更
  • 開発:i18n 複数形キーではないため i18n キーの名称変更
  • 開発:ユーザー同期を独自のモジュールへ移動
  • 開発:カテゴリ作成を独自のモジュールへ移動
  • 修正:競合状態
  • 修正:コミットの個別取得が 079055c によって壊れていた問題を修正
  • 機能:未マージされたコミットの同期
  • 機能:投稿の削除を GitHub に同期
  • リファクタリング:古いパターンと非廃止の処理
  • Rubocop のエラーを解消
  • 開発:入力をサニタイズするためのヘルパー追加
  • 機能:プルリクエストの同期
  • 開発:Rubocop のエラーを解消
  • 修正:文字列定数をスネークケースの大写しに
  • 修正:通常の投稿のみを同期
  • 修正:クローズ投稿の更新時に検証をスキップ
  • 修正:コメントのミラーリング後に node_id を更新
  • 機能:GitHub ウェブフック設定ページ
  • 開発:PR 投稿を GitHub のコメントとしてミラーリングするためのテスト追加
  • 修正:投稿とトピック作成の競合状態

Discourse Styleguide

  • リファクタリング:this.$() パターンの削除
  • 廃止された FA 4.7 アイコン名とリンクの更新
  • リンク更新、アイコンセクションの詳細追加
  • UX:スタイルの軽微な修正
  • SVG スプライトで利用可能なすべてのアイコンをリスト

Discourse Characters Required

  • 翻訳の更新

Discourse Solved

  • 翻訳の更新
  • UX:テキストとボタンを統合して間隔を改善
  • 「UX:テキストとボタンを統合して間隔を改善」の取り消し
  • UX:回答の選択解除ができない場合、ボタンではなくテキストを表示
  • 未使用変数の削除
  • 解決済みボタンのテキストマージンの修正
  • 修正:以前に解決されたトピックを自動ブローアップに含める
  • 修正:架空のカテゴリデフォルト変更後のテストスイートの修正
  • 廃止されたアイコンの置換

Discourse Calendar

  • 各種バグ修正とパフォーマンス改善
  • Prettier の修正
  • Rubocop のエラーを解消
  • 修正:休暇状態にあるユーザーがアクティブであることを確認
  • 開発:時間ベースの不安定なテスト(heisentests)を導入しない
  • 修正:カレンダーのないトピックからの投稿を検証しようとしない
  • 修正:OP 以外の投稿をチェックしないようにする
  • 軽微なコードスタイルの修正
  • 修正:プラグインが無効な場合にカレンダーを markdown 化しない
  • Prettier の修正

Discourse Plugin Discord Auth

(本リリースより Discord サポートが Discourse コアに含まれるため、このプラグインは不要になりました)

  • 開発:reviewable API を使用してユーザーを承認
  • 修正:send_email は false にすべき
  • 機能:Discord を ManagedAuthenticator へ移行
  • 開発:未使用のストラテジーパラメータを削除
  • 修正:再接続を許可するため after_authenticate メソッドシグネチャを修正
  • 開発:omniauth-discord への依存関係を削除
  • 機能:trusted_guilds へのアクセス制限方法を変更
  • UX:Discord シークレットキーをシークレットサイト設定として定義
  • コアが Discord サポートを含む更新された際にプラグインを自動的に無効化
  • UX:client_id サイト設定のコピーを更新

Discourse Prometheus

  • Rubocop のエラーを解消
  • 開発:ファイルの lint、DB 例外の根本原因の特定を試行
  • 開発:接続を積極的にクリアする試行
  • 機能:HTTP エンドポイントごとの SQL 呼び出し回数を追跡
  • 機能:匿名キャッシュのパフォーマンスを追跡
  • 開発:DB ロギングは過剰

Discourse Data Explorer

  • 翻訳の更新
  • リファクタリング:古いパターン、非廃止、および死んだコードの処理
  • prettier の追加
  • prettier の修正
  • 修正:読み取り専用オブジェクトのミューテーションによるエグレッションを防止

Discourse Akismet

  • 翻訳の更新
  • 廃止されたアイコン名の更新
  • 修正:利用できない場合、ユーザー IP/UA を送信しない
  • 修正:Akismet に送信する前に常にバイオを確認
  • ストリップ前に comment_content を確認
  • 修正:client_ip が存在しない場合、ユーザーをスキップ
  • 重複したテスト説明の更新
  • Rubocop の修正
  • 「ストリップ前に comment_content を確認」の取り消し
  • 機能:AkismetFlaggedUsers のレビュー時に可能であればユーザープロフィールへのリンクを追加
  • 修正:‘debundled plugin css assets’ 機能と互換性を持たせる

Discourse Assign

  • 翻訳の更新
  • 開発:グループへの割り当てを許可するためグループ ID を使用
  • リファクタリング:古い Ember パターン、非廃止、死んだコードの処理
  • 開発:新しい topic-button API を使用
  • 修正:taskActions API を使用し、古いボタンを削除
  • 開発:許可されたグループは提案と一緒に送信されます。移行後、ユーザーを検索するために許可されたグループ名にアクセスできるようにする必要があります。
  • 修正:未使用のインポートを削除
  • 許可グループをコンストラクタ内で初期化
  • Rubocop のエラーを解消
  • UX:割り当て済みトピックリストのページタイトルに「割り当て済み」を追加
  • 修正:割り当てモーダルを正しく表示するために staff ではなく can_assign を使用

Discourse Voting

  • 翻訳の更新
  • 開発:category_custom_field をブーリアンとして定義
  • 修正:カテゴリでの投票が無効化された場合、投票を取り戻す
  • Rubocop のエラーを解消
  • パフォーマンス:カテゴリ読み込み時の N+1 を回避
  • 開発:新しい addNavigationBarItem API を使用
  • 開発:イニシャライザーの一部をプリイニシャライザーへ移動
  • 修正:オーバーライドを reloadable_patch でラップ
  • 修正:すべてのカテゴリシリアライザーに can_vote 属性を追加
  • linting
  • 修正:コンテナが破棄されていないことを確認
  • 修正:無効な場合は処理を行わない
  • 修正:古い Discourse バージョンとの互換性を維持
  • リファクタリング:プラグイン CSS の整理
  • UX:投票者ポップアップでアバターをラップ

Discourse AD

  • 翻訳の更新
  • 修正:複数のサイズを使用する際の DFP 広告のサイズ誤り
  • 開発:no_ads_for_groups をグループ名ではなく ID を使用するように移行
  • 修正:Amazon 広告が表示されない問題
  • 開発:no_ads_for_groups をグループ名ではなく ID を使用するように移行
  • 修正:CodeFund と Carbon 広告のすべての配置で広告が常に表示される問題
  • 修正:狭い幅での投稿間の CodeFund 広告
  • 機能:制限されたカテゴリでの広告無効化オプションを追加

追加機能と修正

クリックして展開

新機能

  • グループナビゲーションでのデータエクスプローラーアウトレットのサポート
  • API キーが最後に使用された日時の追跡
  • 詳細なメタデータ付きトピックの埋め込み
  • 匿名キャッシュがロガーにデータを送信
  • カテゴリを削除するための rake タスクの作成
  • 新しい「Discourse-Render」HTTP ヘッダー
  • 報告された投稿を復元した際に投稿者に通知
  • ↔ を絵文字に置換しない
  • グループメッセージで読み状態を公開(元々は #7989 で導入)
  • すべてのイニシャライザー後のフックの追加
  • [date] にカウントダウン属性を追加
  • TLS 1.3 0-RTT 使用時のリプレイ攻撃からの保護
  • バックアップ復元中にプラグインがサイト設定を操作できるようにする
  • グループメッセージで読み状態を公開
  • お気に入り絵文字が作曲器の自動補完にも表示される
  • スタッフのみが投票結果を閲覧可能
  • 投票ビルダーにプレビューを追加
  • テーマがカラー変換変数をオーバーライドできるようにする
  • 招待の引き換え時の外部認証
  • 転送されたメールの内容をトピックに表示する設定を追加
  • メールで抜粋を常に送信するオプションを追加
  • 安全なカテゴリでのメンション時にグループを優先
  • ポスト処理ミューテックスをより長く保持できるようにする
  • 監視単語管理インターフェースにテスト機能追加
  • rake db:stats が提供する統計情報の改善
  • base_url 変更時に新しい VAPID キーを生成
  • 未読状態をトピックリストにリアルタイム同期
  • 送信メールに添付ファイルを追加
  • ユーザーからのすべてのダイレクトメッセージを表示する検索演算子を追加
  • 過去 6 ヶ月にペナルティを受けていないユーザーを TL3 に許可
  • カテゴリを削除するための rake タスクの作成
  • 新しい日時コンポーネント
  • 書き出し用 Gz から Zip への変更
  • 管理者/ユーザー書き出しは Zip 形式で圧縮
  • カテゴリを削除するための rake タスクの作成
  • WorkboxJS を使用して Discourse をオフラインで動作可能に

バグ修正

  • モバイル Safari 作曲器の改善
  • 「グループメンバーシップリクエスト」機能を「logged_on_users」表示レベルオプションと互換性を持たせる
  • iPhone Xs Max と Xʀ 向けに作曲器サイズを調整
  • キャッシュされたコントローラーとアクションをロガーに報告
  • Google クラシックが正しい man_facepalming 絵文字を持つことを確認
  • アップロード URL が存在しない場合、short_url を src として含める
  • メッセージボタンクリック後にユーザーカードを閉じる
  • Safari の同一サイトクッキーの癖に対する認証ポップアップ処理
  • 報告された投稿のユーザー通知
  • 投稿が削除された際にユーザーに通知
  • per_host <-> グローバル変更時のスケジューラーの破損
  • テーマ設定内のネストされたオブジェクトへのアクセスを許可
  • 孤児ユーザーレコードの場合、バッジをスキップ
  • ハートビートはホストごとに行うべき
  • バックグラウンドタブからの通知更新の不具合
  • 更新チェック時にリモートテーマレコードが保存されない問題
  • トピックが削除された場合の変更公開を回避
  • publish_group_state が有効な場合、読みインジケーターを含める
  • 存在しない複数形キーのオーバーライドテキストがエラーを発生させた問題
  • テーマ CSS のライブリロードが初回に正しく動作することを確認
  • turbo_rspec が共有グループでエラーを正しく表示するように修正
  • デプロイ中のスタイルシート作成時の競合状態
  • トピックタイトル編集時にタグを検索しない
  • トピックが存在しなくなった場合のエラー発生を防止
  • Omniauth 経由で有効化する際、パスワードリセット後にトークンを生成
  • ユーザー有効化時、変更が即時反映されることを確認
  • Git バージョンが見つからない場合でもダッシュボードが読み込めるようにする
  • 最初の投稿で実際の読者を表示
  • アバターサイズが整数であることを確認
  • 公式 iOS アプリバナーに app 引数のみを使用
  • 属性が有効な場合のみ誰が読んだかを表示
  • トピックグループを正しく更新
  • en_US における _MF テキストのオーバーライドが機能しなかった問題
  • カスタム認証プロバイダー URL 使用時、GET でリクエストを送信
  • add_to_serializer が継承チェーンを正しく考慮していなかった問題
  • ネイティブアプリ使用時 PWA バナーを表示しない
  • エラーメッセージから重複する %-記号を削除
  • Sidekiq プロセスごとのハートビートチェック
  • mini-tag-chooser がバックグラウンドでタグを取得できるようにする
  • WordPress 向けに隠し投稿をフィルタリング
  • 自身のアカウント削除後に destination_url クッキーを設定しない
  • IE11 でのメンション時の無限ループ
  • デスクトップおよびモバイル専用プラグイン CSS アセットを正しく読み込む
  • 隠しタグ使用時のトピック編集を許可
  • フォールバックハンドラーの競合状態
  • ステージングされた未使用の管理者とモデレーターを削除しようとしない
  • アップロードの未知の拡張子を定期的にリセット
  • PWA インストールバナーを当面 Android のみに制限
  • グループ設定が有効な場合のみ読みインジケーターを表示
  • 追加ロケールがスタッフのみに利用可能であることを確認
  • オフセットが常に正であることを確認
  • クリックイベントの登録解除時にモバイルナビがエラーを発生しないようにする
  • 追加ナビアイテムのカスタム href 向けに単純なパターンを使用
  • Rack-mini-profiler がプラグインフレームを表示しない問題
  • J/K ナビゲーションで高速スクロール時に現在の選択がリセットされる問題
  • グループ招待時に通知レベルを正しく設定
  • グループをメッセージに招待する際、追跡状態を尊重
  • topic_query_params を明示的に要求
  • リマップ後にバナートピックキャッシュをクリア
  • レポートがレコードを修正できないようにする
  • ライブラリ読み込み時の競合状態を修正
  • S3 関連の分散ロックをより長く保持
  • プラグインが必要なカスタム属性を queuedpost ペイロードに保存
  • addDiscoveryQueryParam からのパラメータ使用を試行
  • 比較前に Omniauth 認証プロバイダー名をシンボルに変換
  • 認証プロバイダーメールが欠落している場合、例外を発生させない
  • 認証プロバイダーから返されるメールを小文字化
  • モデル使用を SQL クエリに置換
  • post_edits レポートの順序を修正し、クエリ制限を削除
  • post_edits ダッシュボードレポートのクエリを修正
  • S3 アップロードチェック後に tmp インベントリファイルを削除
  • Android でのスワイプインメニューを廃止
  • 最初の投稿移動時に watching_first_post 通知を更新しない
  • 信頼されたユーザーが 1 つのフラグでコンテンツを非表示にする可能性
  • 復元中の失敗したリマップを防止
  • リマップ中に topic_links.url を 500 文字に切り捨て
  • ダブル「いいね」通知を作成しない
  • 空白の 2 段階認証にデフォルト名を設定
  • IE 向けに String.prototype.repeat のポリフィル
  • PM に投稿したユーザーの自己削除を禁止
  • コンテンツが Nokogiri::XML::Element のインスタンスである可能性があるため #dup を #+@ の代わりに使用
  • テーブル削除時に readonly 関数を削除
  • バックアップ中に readonly 関数を作成
  • DiscourseHub ユーザーエージェントを検出
  • Oneboxed URL のみに対して「最初の Onebox」バッジを付与
  • OmniAuth ルートの順序を修正
  • Reviewable 更新時に通知
  • 特定のロケール向けに間違った discobot チュートリアルが開始される問題
  • distributed_mutex ライブラリにおける present? への依存関係を削除
  • HTTP ヘッダー内の非 ASCII ファイル名を正しくエンコード
  • パス /login または /session の同一ホストでのリダイレクトに従わない
  • 数字と記号の絵文字の置換を許可
  • 一部の HTML でトピック埋め込みが失敗する問題
  • 最小表示要件を満たさないトピックを非表示/閉じない
  • コマボボックス ID としてエスケープされていないタイトルを使用
  • S3 アップロードに cache-control ヘッダーが欠落していた問題
  • flag-ratio レポートが disagreed > agreed のユーザーを表示することを確認
  • メンバーシップリクエストリンクをグループ所有者のみに表示
  • 生成されたコントローラーはアンダースコア付きフォルダに配置されるべき
  • Pikaday ピッカーが UTC で表示されることを確認
  • Chrome で作曲器にファイルをコピーペーストできるようにする
  • b1f5949 内の構文エラー
  • マルチサイト対応の workbox パス
  • IE11 での作曲器プレビュー
  • 廃止された「refresh」アイコンを「sync」に名称変更
  • Apple ブラウザのより良い検出
  • 監視単語の各種改善
  • ソース URL に既に存在する場合、マルチサイトアップロードパスを含めない
  • アップロード回復をマルチサイトと互換性を持たせる
  • 最初の投稿移動時に返信を正しく更新
  • モーダルの onClose が繰り返し呼び出されていた問題
  • マルチサイトテストで例外が発生した際のロールバック
  • テストで異なるスレッド間で redis 接続を再利用しない
  • Gravatar アップロードが authorized_extensions に依存していた問題
  • DistributedMutex
  • 管理者ユーザーページからのユーザー名更新時のエラーメッセージ改善
  • DbHelper.remap に verbose オプションを復活
  • 移行時に frozen_string_literal: true を追加
  • user-notifications-dropdown が意図しない変更を引き起こさないようにする
  • Post#each_upload_url が CDN 有効時にブロックに誤ったパスを返す問題
  • 最初の db:migrate でイニシャライザーが動作するようにする
  • Chromium ベースの Edge を正しく識別
  • テーマコンポーネントでのマルチファイルスタイルシートサポート
  • 空のシークレットによる SSO 失敗時のより良いエラーメッセージ
  • レポート書き出し時にデフォルトラベルを含める
  • 有効なタグが選択されていない場合のエラーメッセージを提供
  • TopicEmbed.import での frozen string エラー
  • 無視されたユーザーからライブ読み込みされた投稿を非表示
  • #18e2816 の取り消し
  • マルチサイト設定でオリジナルと最適化されたインベントリに同じ ID を使用
  • ルート形式にデフォルト制約を適用(2 回目)
  • auth_redirect においてクエリパラメータを保持
  • migrate_to_s3 直後にジョブが実行されないようにする
  • トピックのカテゴリ更新時のタグチェックを改善
  • 作曲器で許可されていない場合、未分類コンテキストを削除
  • featuredLink を featured_link としてバックエンドに送信して正しい値を更新
  • featuredLink を featured_link としてバックエンドに送信して正しい値を更新
  • 圧縮されていないルートパスをチェックする際に uniq! ではなく uniq を使用。ZipUtils に対して Rails 命名規則を使用
  • 移行が frozen string を変更しようとしていた問題
  • 投稿移動時に返信数を更新
  • 投稿移動後にユーザーが見られない通知を削除
  • 投稿移動後に古い通知が正しい投稿にリンクしなかった問題
  • wrap コンポーネントでキャメルケース属性を指定できるようにする
  • 投稿ごとの最小読了時間を設定
  • S3 に保存されたファイルに加えてローカルアップロードを常にバックアップ
  • 「すべてログアウト」リクエスト時にリフレッシュを要求しない
  • 投稿通知に同じユーザー名または名前を表示
  • Unicode サイトタイトルを持つ空のバックアップ名
  • RSS フィードのユーザープロフィールリンクでユーザー名を URL エンコード
  • ‘find_missing_uploads’ メソッド内での投稿アップロードレコード作成を削除
  • ボタンでアカウント削除モーダルを閉じられないバグ
  • 監視単語 UI で翻訳できない文字列
  • Unicode サイトタイトルを持つ空のバックアップ名
  • 「すべてログアウト」時に logout_redirect 設定を尊重
  • ‘raw’ が非画像アップロード URL で始まる場合、短縮 URL に変換されない問題
  • ホットリンクされた非画像 URL を短縮 URL に変換
  • Apple デバイスからすべてのサービスワーカーを 再度 削除
  • 廃止されたアイコンの名称変更、バッジでのカスタムアイコン許可
  • COMPILER_VERSION 変更時に extra_js テーマアセットを再コンパイル
  • brotli がサポートされていない場合 gzip 圧縮にフォールバック
  • ホットリンクされた非画像 URL の Markdown 変換をスキップ
  • pg_dump >= 11 によるバックアップは非移植
  • ルート形式にデフォルト制約を適用
  • 抑制されたカテゴリが機能トピックを生成しないようにする

UX 変更

  • トピックリスト埋め込みで Flexbox を使用
  • em 単位ではなく vertical-align: middle を使用
  • カラーコード変数の使用
  • 埋め込みトピックリストの HTML 構造をテーブルから div へ変換
  • 読みインジケーターの改善
  • デスクトップ通知に関する未使用文字列の削除
  • #8047 への小さなフォローアップ
  • ヘッダー内のタグの整列改善
  • 検索における Chrome 自動補完バグの回避策
  • 長いサブカテゴリ名を持つカテゴリボックスのレイアウト修正
  • 引用内の非ライトボックス画像の伸縮を防止
  • タグ作成権限がないユーザーに「タグ作成」オプションを非表示
  • カテゴリタイトル前のプラグインアウトレットの配置を統一
  • サイト設定説明に robots.txt エディターへのリンクを追加
  • 必要な場合、ローカライズされていない認証プロバイダー名にフォールバック
  • Twitter Onebox iframe がモバイルビューポートより高くならないようにする
  • 一般的な OmniAuth 例外のエラー処理を改善
  • 管理者メールテンプレートをフォームのスペースを広くするために修正
  • 無視期間モーダルを開く際にユーザー名をクリア
  • 認証フロー中にログイン/サインアップヘッダーボタンを非表示
  • no_ember ページにログインボタンアイコンを追加
  • 投票ビルダーモーダルのレイアウト改善
  • レポート書き出し UI の日付表示を改善
  • local-dates プラグインで短い曜日ラベルを使用
  • 日付ピッカーで短い曜日ラベルを使用
  • 非表示時の「投稿を保持」を「投稿を非表示のまま保持」に名称変更
  • 管理者ダイジェストメールプレビューページのスタイル修正
  • 無視ユーザーリストの混乱を招くボーダーを削除
  • プロフィール表示を他の要素と統一
  • 調理済み日付の折り返しを防止
  • 管理者がカテゴリ権限変更時にグループを追加せずに保存をクリックした際の警告表示
  • ピン留め/追跡理由テキストのコントラストを上げ、レイアウトを改善
  • アカウント説明がない場合のアカウント関連付けを改善
  • post-controls に展開/折りたたみクラスを追加
  • Onebox ファビコンの垂直整列を修正
  • モバイルでの長いタグ見出しのレイアウト改善
  • モバイルでのスペースを改善するためのアバターアップロードモーダルのリファクタリング
  • 招待「見つかりません」メッセージの更新
  • モバイルでのプロフィール画像アップロードコントロールのスペース修正
  • カテゴリボックスタイトルに href を持つ <a> タグを追加
  • 二要素設定内の重複コピーを削除
  • SCSS カラー変数の使用
  • システム編集通知をデフォルトで無効化
  • 無視とミュートセクションを交換して「変更を保存」ボタンを下部に移動
  • robots.txt テキストエリアのビューポート相対高さを使用
  • 編集モーダル内のコントロールを再配置

パフォーマンス

  • ファビコンのプロキシに CDN URL を使用
  • 定期ジョブスケジュールに複数のスレッドを実行
  • ユーザーアクションの一貫性ウィンドウを縮小
  • 使用されていない場合、共有下書きのフィルタリングを回避
  • 使用するフィールドのみを選択
  • グループメンバーが最後に読んだ投稿を事前計算
  • 作曲器本文の長さ計算を高速化
  • トピック表示時の N+1 を回避
  • Rake posts:rebake_uncooked_posts をインラインで実行
  • Message_bus が洪水時にサーバーによって遅延される
  • キャッシュストレージ使用量にさらに制約を追加
  • 直接 PM の検索時のクエリ速度を改善
「いいね!」 25