diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5bb2dfc165..18f09976fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,7 @@ v2025.12.0で行われた「configの`trustProxy`のデフォルト値を`false`
### Client
- Fix: バージョン表記のないPlayが正しく動作しない問題を修正
-
+- Enhance: センシティブチャンネルの投稿が多くの場所で畳まれるようにになりました
## 2025.12.1
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 8e4a52b68d..664bb89178 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -839,6 +839,7 @@ emailNotification: "メール通知"
publish: "公開"
inChannelSearch: "チャンネル内検索"
useReactionPickerForContextMenu: "右クリックでリアクションピッカーを開く"
+collapseSensitiveChannel: "ほとんどのタイムラインでセンシティブチャンネルの投稿を隠す"
typingUsers: "{users}が入力中"
jumpToSpecifiedDate: "特定の日付にジャンプ"
showingPastTimeline: "過去のタイムラインを表示しています"
@@ -1281,6 +1282,7 @@ backToTitle: "タイトルへ"
hemisphere: "お住まいの地域"
withSensitive: "センシティブなファイルを含むノートを表示"
userSaysSomethingSensitive: "{name}のセンシティブなファイルを含む投稿"
+userSaysSomethingInSensitiveChannel: "{name}のセンシティブチャンネルでの投稿"
enableHorizontalSwipe: "スワイプしてタブを切り替える"
loading: "読み込み中"
surrender: "やめる"
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index a7299d2961..a7c28ea4c9 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -169,6 +169,13 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
+
+
+
+
+
@@ -261,6 +268,9 @@ const emit = defineEmits<{
(ev: 'removeReaction', emoji: string): void;
}>();
+// for some timelines, like home timeline which only shows the following channels,
+// we never collapse sensitive channel notes so we allow inject to override the preference
+const collapseSensitiveChannel: boolean = inject('collapseSensitiveChannel', undefined) ?? prefer.s.collapseSensitiveChannel;
const inTimeline = inject('inTimeline', false);
const tl_withSensitive = inject[>('tl_withSensitive', ref(true));
const inChannel = inject('inChannel', null);
@@ -330,9 +340,9 @@ const pleaseLoginContext = computed(() => ({
/* eslint-disable no-redeclare */
/** checkOnlyでは純粋なワードミュート結果をbooleanで返却する */
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly: true): boolean;
-function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly?: false): Array | false | 'sensitiveMute';
+function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly?: false): Array | false | 'sensitiveMute' | 'sensitiveChannel';
-function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly = false): Array | boolean | 'sensitiveMute' {
+function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly = false): Array | boolean | 'sensitiveMute' | 'sensitiveChannel' {
if (mutedWords != null) {
const result = checkWordMute(noteToCheck, $i, mutedWords);
if (Array.isArray(result)) {
@@ -352,6 +362,7 @@ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array v.isSensitive)) {
return 'sensitiveMute';
}
diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue
index 0879aa72be..22426e9cc4 100644
--- a/packages/frontend/src/pages/channel.vue
+++ b/packages/frontend/src/pages/channel.vue
@@ -71,7 +71,7 @@ SPDX-License-Identifier: AGPL-3.0-only
]