diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45dc0e3c905c..0ecb6b3ede33 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,22 @@
-->
+## 13.x.x (unreleased)
+
+### General
+
+### Client
+- deck UIのカラムのメニューからアンテナとリストの編集画面を開けるように
+- 画像を動画と同様に簡単に隠せるように
+- 見たことのあるRenoteを省略して表示をオンのときに自分のnoteのrenoteを省略するように
+- フォローやお気に入り登録をしていないチャンネルを開く時は概要ページを開くように
+- 引用対象を「もっと見る」で展開した場合、「閉じる」で畳めるように
+- Renote時に公開範囲のデフォルト設定が適用されるように
+- 画面ビューワをタップした場合、マウスクリックと同様に画像ビューワを閉じるように
+- Fix: 長い文章を投稿する際、プレビューが画面からはみ出る問題を修正
+
+### Server
+
## 13.13.2
### General
diff --git a/locales/index.d.ts b/locales/index.d.ts
index eed29f408c0b..4763d21400ce 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -139,8 +139,10 @@ export interface Locale {
"suspendConfirm": string;
"unsuspendConfirm": string;
"selectList": string;
+ "editList": string;
"selectChannel": string;
"selectAntenna": string;
+ "editAntenna": string;
"selectWidget": string;
"editWidgets": string;
"editWidgetsExit": string;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 8004e53575f6..587fabdf04ba 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -136,8 +136,10 @@ unblockConfirm: "ブロック解除しますか?"
suspendConfirm: "凍結しますか?"
unsuspendConfirm: "解凍しますか?"
selectList: "リストを選択"
+editList: "リストを編集"
selectChannel: "チャンネルを選択"
selectAntenna: "アンテナを選択"
+editAntenna: "アンテナを編集"
selectWidget: "ウィジェットを選択"
editWidgets: "ウィジェットを編集"
editWidgetsExit: "編集を終了"
diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue
index b29871c3635e..df49bcb26d1c 100644
--- a/packages/frontend/src/components/MkMediaImage.vue
+++ b/packages/frontend/src/components/MkMediaImage.vue
@@ -33,6 +33,7 @@
NSFW
+
@@ -113,6 +114,21 @@ function showMenu(ev: MouseEvent) {
align-items: center;
}
+.hide {
+ display: block;
+ position: absolute;
+ border-radius: 6px;
+ background-color: var(--fg);
+ color: var(--accentLighten);
+ font-size: 14px;
+ opacity: .5;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: pointer;
+ top: 12px;
+ right: 12px;
+}
+
.hiddenTextWrapper {
display: table-cell;
text-align: center;
diff --git a/packages/frontend/src/components/MkMediaList.vue b/packages/frontend/src/components/MkMediaList.vue
index a0a2450054b1..16328e1a3f4f 100644
--- a/packages/frontend/src/components/MkMediaList.vue
+++ b/packages/frontend/src/components/MkMediaList.vue
@@ -113,7 +113,7 @@ onMounted(() => {
right: 0,
},
imageClickAction: 'close',
- tapAction: 'toggle-controls',
+ tapAction: 'close',
bgOpacity: 1,
pswpModule: PhotoSwipe,
});
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 7c9ddadbf8e3..7a7406931ba8 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -222,7 +222,7 @@ const translation = ref(null);
const translating = ref(false);
const showTicker = (defaultStore.state.instanceTicker === 'always') || (defaultStore.state.instanceTicker === 'remote' && appearNote.user.instance);
const canRenote = computed(() => ['public', 'home'].includes(appearNote.visibility) || appearNote.userId === $i.id);
-let renoteCollapsed = $ref(defaultStore.state.collapseRenotes && isRenote && (($i && ($i.id === note.userId)) || (appearNote.myReaction != null)));
+let renoteCollapsed = $ref(defaultStore.state.collapseRenotes && isRenote && (($i && ($i.id === note.userId || $i.id === appearNote.userId)) || (appearNote.myReaction != null)));
const keymap = {
'r': () => reply(true),
@@ -259,6 +259,17 @@ useTooltip(renoteButton, async (showing) => {
}, {}, 'closed');
});
+type Visibility = 'public' | 'home' | 'followers' | 'specified';
+
+// defaultStore.state.visibilityがstringなためstringも受け付けている
+function smallerVisibility(a: Visibility | string, b: Visibility | string): Visibility {
+ if (a === 'specified' || b === 'specified') return 'specified';
+ if (a === 'followers' || b === 'followers') return 'followers';
+ if (a === 'home' || b === 'home') return 'home';
+ // if (a === 'public' || b === 'public')
+ return 'public';
+}
+
function renote(viaKeyboard = false) {
pleaseLogin();
showMovedDialog();
@@ -309,7 +320,12 @@ function renote(viaKeyboard = false) {
os.popup(MkRippleEffect, { x, y }, {}, 'end');
}
+ const configuredVisibility = defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility;
+ const localOnly = defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly;
+
os.api('notes/create', {
+ localOnly,
+ visibility: smallerVisibility(appearNote.visibility, configuredVisibility),
renoteId: appearNote.id,
}).then(() => {
os.toast(i18n.ts.renoted);
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index 5c6556968304..f9edc048ece9 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -1015,6 +1015,8 @@ defineExpose({
.preview {
padding: 16px 20px 0 20px;
+ max-height: 150px;
+ overflow: auto;
}
.targetNote {
diff --git a/packages/frontend/src/components/MkPostFormDialog.vue b/packages/frontend/src/components/MkPostFormDialog.vue
index 98af92c6f844..989c138e813f 100644
--- a/packages/frontend/src/components/MkPostFormDialog.vue
+++ b/packages/frontend/src/components/MkPostFormDialog.vue
@@ -1,6 +1,6 @@
-
+
@@ -44,3 +44,10 @@ function onModalClosed() {
emit('closed');
}
+
+
diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue
index 3a050889c8d6..c76ce7315d08 100644
--- a/packages/frontend/src/components/MkSubNoteContent.vue
+++ b/packages/frontend/src/components/MkSubNoteContent.vue
@@ -15,9 +15,12 @@
{{ i18n.ts.poll }}
-