@@ -21,7 +21,7 @@
{{ note.reactions[reaction] }}
-
+
diff --git a/packages/frontend/src/components/MkRenotedUsersDialog.vue b/packages/frontend/src/components/MkRenotedUsersDialog.vue
new file mode 100644
index 0000000000..56025535f1
--- /dev/null
+++ b/packages/frontend/src/components/MkRenotedUsersDialog.vue
@@ -0,0 +1,65 @@
+
+
+ {{ i18n.ts.renotesList }}
+
+
+
+
+
+
{{ i18n.ts.nothing }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/const.ts b/packages/frontend/src/const.ts
index 1d1b8fcea4..38af9eac9a 100644
--- a/packages/frontend/src/const.ts
+++ b/packages/frontend/src/const.ts
@@ -35,6 +35,11 @@ export const FILE_TYPE_BROWSERSAFE = [
'audio/webm',
'audio/aac',
+
+ // see https://github.com/misskey-dev/misskey/pull/10686
+ 'audio/flac',
+ 'audio/wav',
+ // backward compatibility
'audio/x-flac',
'audio/vnd.wave',
];
diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue
index b742132af6..d51bf6230a 100644
--- a/packages/frontend/src/pages/admin/email-settings.vue
+++ b/packages/frontend/src/pages/admin/email-settings.vue
@@ -96,7 +96,9 @@ async function testEmail() {
const { canceled, result: destination } = await os.inputText({
title: i18n.ts.destination,
type: 'email',
- placeholder: instance.maintainerEmail,
+ default: instance.maintainerEmail ?? '',
+ placeholder: 'test@example.com',
+ minLength: 1,
});
if (canceled) return;
os.apiWithDialog('admin/send-email', {
diff --git a/packages/frontend/src/pages/flash/flash-edit.vue b/packages/frontend/src/pages/flash/flash-edit.vue
index 35edcc7cda..639e351cac 100644
--- a/packages/frontend/src/pages/flash/flash-edit.vue
+++ b/packages/frontend/src/pages/flash/flash-edit.vue
@@ -305,6 +305,11 @@ const PRESET_TIMELINE = `/// @ 0.13.1
// それぞれのノートごとにUI要素作成
let noteEls = []
each (let note, notes) {
+ // 表示名を設定していないアカウントはidを表示
+ let userName = if Core:type(note.user.name) == "str" note.user.name else note.user.username
+ // リノートもしくはメディア・投票のみで本文が無いノートに代替表示文を設定
+ let noteText = if Core:type(note.text) == "str" note.text else "(リノートもしくはメディア・投票のみのノート)"
+
let el = Ui:C:container({
bgColor: "#444"
fgColor: "#fff"
@@ -312,11 +317,11 @@ const PRESET_TIMELINE = `/// @ 0.13.1
rounded: true
children: [
Ui:C:mfm({
- text: note.user.name
+ text: userName
bold: true
})
Ui:C:mfm({
- text: note.text
+ text: noteText
})
]
})
diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts
index d91f0b0eb6..c8a6100253 100644
--- a/packages/frontend/src/scripts/get-note-menu.ts
+++ b/packages/frontend/src/scripts/get-note-menu.ts
@@ -211,6 +211,12 @@ export function getNoteMenu(props: {
}, {}, 'closed');
}
+ function showRenotes(): void {
+ os.popup(defineAsyncComponent(() => import('@/components/MkRenotedUsersDialog.vue')), {
+ noteId: appearNote.id,
+ }, {}, 'closed');
+ }
+
async function translate(): Promise {
if (props.translation.value != null) return;
props.translating.value = true;
@@ -241,8 +247,12 @@ export function getNoteMenu(props: {
text: i18n.ts.details,
action: openDetail,
}, {
- icon: 'ti ti-users',
- text: i18n.ts.reactions,
+ icon: 'ti ti-repeat',
+ text: i18n.ts.renotesList,
+ action: showRenotes,
+ }, {
+ icon: 'ti ti-icons',
+ text: i18n.ts.reactionsList,
action: showReactions,
}, {
icon: 'ti ti-copy',