enable_new_composer_actions の背後にある Composer のリデザイン
この変更により、リデザインされた Composer のエクスペリエンスが導入され、新しいアルファ版の upcoming-change としてリリースされます。フラグがオフ(デフォルト)の場合、視覚的な変化はありません。管理者は upcoming-changes の管理ページからオプトインできます。
フラグがオンの場合の変化
-
統合されたアクションドロップダウン。従来の SelectKit
composer-actionsドロップダウンが、新しい Glimmer/DMenu コンポーネント(composer-actions-new.gjs)に置き換えられました。これは、より明確なラベルとアイコンで、同じモード切り替え行(トピックへの返信、新規トピックとしての返信、PM の作成など)をすべて表示します。 -
トグルはアクションと共に表示されます。Whisper / no-bump / unlist は、同じドロップダウンの下部にある
<DToggleSwitch>アイテムとしてレンダリングされます。これは、別のコンボボタンメニューではありません。トグルの状態はモード切り替え後も維持されます(例:Whisper をオンにする → 返信対象をトピックから投稿に切り替える → それでも Whisper 状態のまま)。
-
Whisper 状態インジケーターのピル。ドロップダウントリガーの右側にある小さなボタンで、現在の Whisper 状態を 2 つの視覚的バリエーションで表示します:
--public(セカンダリカラー、目のアイコン、「返信は表示されます」)と--whispering(primary-medium / primary-very-low 背景、目を隠すアイコン、「Whisper 中」)。これをクリックすると Whisper が切り替わります。これはドロップダウン内のトグルと同じコードパスを使用するため、両者は同期します。トリガーアイコン自体も Whisper 中はfar-eye-slashに切り替わります。 -
編集 UX。投稿を編集している場合、ドロップダウンは静的なカーソルなしラベル(鉛筆アイコン+「投稿を編集」)に折りたたまれます。以前は Composer の他の場所にあった「編集理由を追加」ボタンは、この静的トリガーに統合され、「編集内容の説明」ボタンとしてクリック可能になります。これをクリックすると、ラベルが
composer.editReasonにバインドされたテキスト入力フィールドに切り替わり、フォーカスが当てられます。 -
Composer の外観(chrome)。
.action-titleテキスト/スパンは削除されました。ドロップダウントリガー自体が現在のモードを表示します。 -
投稿/トピックリンク は必要に応じてのみ表示されます。トピックから移動するとトピックリンクがレンダリングされ、投稿からスクロール移動または移動すると投稿リンクがレンダリングされます。
プラグイン開発者向けメモ
新しいコンポーネントは SelectKit のサブクラスではないため、従来の拡張 API は適用されません。このアルファフェーズで両方のフラグ状態に対応するため、プラグインは両方の API を登録する必要があります:
| 旧 API(旧コンポーネントのみで動作) | 新 API(新コンポーネントのみで動作) |
|---|---|
api.modifySelectKit("composer-actions").appendContent(...) |
api.registerValueTransformer("composer-actions-content", ({ value, context }) => { value.push(...); return value; }) |
api.modifyClass("component:composer-actions", { fooSelected(options, model) { ... } }) |
api.registerBehaviorTransformer("composer-actions-on-select", ({ context, next }) => { if (context.actionId === "foo") { ...; return; } next(); }) |
行の形状({ name, description, icon, id })は両方で同一です。Behavior transformer は、コンテキスト内で { actionId, options, model } を受け取ります。
旧フックのみを登録しているプラグインは、管理者がフラグを有効にした瞬間に Composer から静かに消えます。新しい transformer のみを登録しているプラグインは、フラグがオフの間(マージ時のデフォルト状態)は表示されません。
参照:
-
discourse-post-voting/extend-composer-actions.js — 二重登録の動作例(コア内)
-
discourse-staff-alias — 別途 PR で二重登録を追加
-
transformers.js — 2 つの新しい transformer 名
ロールアウトに関するメモ
-
フラグの状態は アルファ です。内部テスト用のオプトインです。
-
Composer アクションと連携するプラグインは、これが
beta/stableに昇格する前に二重登録を追加してください。 -
テストは両方の状態をカバーしています:既存の受け入れ/システム仕様はフラグオフをカバーし、兄弟の
*-new-test.jsファイルはフラグオンをカバーします(さらに、統合ドロップダウン、トグルアイテム、Whisper インジケーター、分割ラベルスパン用の新しいコンポーネント DOM セレクターも含まれます)。



