From 11204eeb43fd02ed48e1099e07f07ee419a7e671 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 09:50:36 +0900
Subject: [PATCH 01/28] refactor
---
packages/frontend/.storybook/fakes.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/packages/frontend/.storybook/fakes.ts b/packages/frontend/.storybook/fakes.ts
index 9cd8ac474c..ed29c63471 100644
--- a/packages/frontend/.storybook/fakes.ts
+++ b/packages/frontend/.storybook/fakes.ts
@@ -207,6 +207,7 @@ export function federationInstance(): entities.FederationInstance {
isSuspended: false,
suspensionState: 'none',
isBlocked: false,
+ isMediaSilenced: false,
softwareName: 'misskey',
softwareVersion: '2024.5.0',
openRegistrations: false,
@@ -311,6 +312,8 @@ export function userDetailed(id = 'someuserid', username = 'miskist', host: enti
alsoKnownAs: null,
notify: 'none',
memo: null,
+ canChat: true,
+ chatScope: 'everyone',
};
}
@@ -378,6 +381,7 @@ export function role(params: {
asBadge: params.asBadge ?? true,
canEditMembersByModerator: params.canEditMembersByModerator ?? false,
usersCount: params.usersCount ?? 10,
+ preserveAssignmentOnMoveAccount: false,
condFormula: {
id: '',
type: 'or',
From 18e42cc83d929f3029d893fdae24916ed60fde56 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 09:53:38 +0900
Subject: [PATCH 02/28] refactoe
---
packages/frontend/src/pages/drop-and-fusion.vue | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue
index bc957ff38a..c1a8b992b7 100644
--- a/packages/frontend/src/pages/drop-and-fusion.vue
+++ b/packages/frontend/src/pages/drop-and-fusion.vue
@@ -48,8 +48,8 @@ SPDX-License-Identifier: AGPL-3.0-only
![]()
import('./index.timeline.vue'));
const props = withDefaults(defineProps<{
user: Misskey.entities.UserDetailed;
/** Test only; MkNotesTimeline currently causes problems in vitest */
- disableNotes: boolean;
+ disableNotes?: boolean;
}>(), {
disableNotes: false,
});
From bdec4bf87a546efd07b7c0076d9205f690ce021f Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 10:16:33 +0900
Subject: [PATCH 04/28] refactor
---
packages/frontend/src/pages/user/activity.following.vue | 1 -
packages/frontend/src/pages/user/activity.notes.vue | 1 -
packages/frontend/src/pages/user/activity.pv.vue | 1 -
packages/frontend/src/plugin.ts | 4 ++--
4 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/packages/frontend/src/pages/user/activity.following.vue b/packages/frontend/src/pages/user/activity.following.vue
index 882b45080e..d1cfa5356b 100644
--- a/packages/frontend/src/pages/user/activity.following.vue
+++ b/packages/frontend/src/pages/user/activity.following.vue
@@ -117,7 +117,6 @@ async function renderChart() {
offset: true,
stacked: true,
time: {
- stepSize: 1,
unit: 'day',
displayFormats: {
day: 'M/d',
diff --git a/packages/frontend/src/pages/user/activity.notes.vue b/packages/frontend/src/pages/user/activity.notes.vue
index 39c9fd7950..1cf7a00716 100644
--- a/packages/frontend/src/pages/user/activity.notes.vue
+++ b/packages/frontend/src/pages/user/activity.notes.vue
@@ -116,7 +116,6 @@ async function renderChart() {
offset: true,
stacked: true,
time: {
- stepSize: 1,
unit: 'day',
displayFormats: {
day: 'M/d',
diff --git a/packages/frontend/src/pages/user/activity.pv.vue b/packages/frontend/src/pages/user/activity.pv.vue
index 9e1b92058b..2539a6777b 100644
--- a/packages/frontend/src/pages/user/activity.pv.vue
+++ b/packages/frontend/src/pages/user/activity.pv.vue
@@ -117,7 +117,6 @@ async function renderChart() {
offset: true,
stacked: true,
time: {
- stepSize: 1,
unit: 'day',
displayFormats: {
day: 'M/d',
diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts
index 346e275575..657197d1b3 100644
--- a/packages/frontend/src/plugin.ts
+++ b/packages/frontend/src/plugin.ts
@@ -205,13 +205,13 @@ type HandlerDef = {
handler: (note: Misskey.entities.Note) => void;
};
note_view_interruptor: {
- handler: (note: Misskey.entities.Note) => unknown;
+ handler: (note: Misskey.entities.Note) => Misskey.entities.Note;
};
note_post_interruptor: {
handler: (note: FIXME) => unknown;
};
page_view_interruptor: {
- handler: (page: Misskey.entities.Page) => unknown;
+ handler: (page: Misskey.entities.Page) => Misskey.entities.Page;
};
};
From 08ecf7ca79812cb904d2861ec82a67260a6819bf Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 10:19:14 +0900
Subject: [PATCH 05/28] refactor
---
packages/frontend/src/pages/admin/security.vue | 2 +-
packages/frontend/src/pages/channel-editor.vue | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/packages/frontend/src/pages/admin/security.vue b/packages/frontend/src/pages/admin/security.vue
index 27e35c7e69..fa93124daa 100644
--- a/packages/frontend/src/pages/admin/security.vue
+++ b/packages/frontend/src/pages/admin/security.vue
@@ -194,7 +194,7 @@ const sensitiveMediaDetectionForm = useForm({
state.sensitiveMediaDetectionSensitivity === 2 ? 'medium' :
state.sensitiveMediaDetectionSensitivity === 3 ? 'high' :
state.sensitiveMediaDetectionSensitivity === 4 ? 'veryHigh' :
- 0,
+ null as never,
setSensitiveFlagAutomatically: state.setSensitiveFlagAutomatically,
enableSensitiveMediaDetectionForVideos: state.enableSensitiveMediaDetectionForVideos,
});
diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue
index ce26a26109..251f5d557d 100644
--- a/packages/frontend/src/pages/channel-editor.vue
+++ b/packages/frontend/src/pages/channel-editor.vue
@@ -138,9 +138,10 @@ async function addPinnedNote() {
const { canceled, result: value } = await os.inputText({
title: i18n.ts.noteIdOrUrl,
});
- if (canceled) return;
+ if (canceled || value == null) return;
+ const fromUrl = value.includes('/') ? value.split('/').pop() : null;
const note = await os.apiWithDialog('notes/show', {
- noteId: value.includes('/') ? value.split('/').pop() : value,
+ noteId: fromUrl ?? value,
});
pinnedNotes.value = [{
id: note.id,
From d27c740ab02b635da6ec7bb2d76835525009489e Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 12:31:27 +0900
Subject: [PATCH 06/28] refactor
---
.../src/pages/admin/overview.active-users.vue | 7 +++++--
.../src/pages/admin/overview.ap-requests.vue | 15 ++++++++++-----
.../src/pages/user/activity.following.vue | 4 +++-
.../frontend/src/pages/user/activity.notes.vue | 4 +++-
packages/frontend/src/pages/user/activity.pv.vue | 6 +++---
packages/frontend/src/utility/chart-legend.ts | 4 +++-
6 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/packages/frontend/src/pages/admin/overview.active-users.vue b/packages/frontend/src/pages/admin/overview.active-users.vue
index f74356599b..6c85f11cb1 100644
--- a/packages/frontend/src/pages/admin/overview.active-users.vue
+++ b/packages/frontend/src/pages/admin/overview.active-users.vue
@@ -37,6 +37,8 @@ async function renderChart() {
chartInstance.destroy();
}
+ if (chartEl.value == null) return;
+
const getDate = (ago: number) => {
const y = now.getFullYear();
const m = now.getMonth();
@@ -105,7 +107,6 @@ async function renderChart() {
type: 'time',
offset: true,
time: {
- stepSize: 1,
unit: 'day',
displayFormats: {
day: 'M/d',
@@ -149,7 +150,9 @@ async function renderChart() {
},
external: externalTooltipHandler,
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor)],
diff --git a/packages/frontend/src/pages/admin/overview.ap-requests.vue b/packages/frontend/src/pages/admin/overview.ap-requests.vue
index 96ea4749dc..75f544c5a9 100644
--- a/packages/frontend/src/pages/admin/overview.ap-requests.vue
+++ b/packages/frontend/src/pages/admin/overview.ap-requests.vue
@@ -42,6 +42,9 @@ const { handler: externalTooltipHandler } = useChartTooltip();
const { handler: externalTooltipHandler2 } = useChartTooltip();
onMounted(async () => {
+ if (chartEl.value == null) return;
+ if (chartEl2.value == null) return;
+
const now = isChromatic() ? new Date('2024-08-31T10:00:00Z') : new Date();
const getDate = (ago: number) => {
@@ -122,7 +125,6 @@ onMounted(async () => {
stacked: true,
offset: false,
time: {
- stepSize: 1,
unit: 'day',
},
grid: {
@@ -144,7 +146,7 @@ onMounted(async () => {
ticks: {
display: true,
//mirror: true,
- callback: (value, index, values) => value < 0 ? -value : value,
+ callback: (value, index, values) => (value as number) < 0 ? -value : value,
},
},
},
@@ -173,7 +175,9 @@ onMounted(async () => {
label: context => `${context.dataset.label}: ${Math.abs(context.parsed.y)}`,
},
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor)],
@@ -213,7 +217,6 @@ onMounted(async () => {
type: 'time',
offset: false,
time: {
- stepSize: 1,
unit: 'day',
displayFormats: {
day: 'M/d',
@@ -260,7 +263,9 @@ onMounted(async () => {
},
external: externalTooltipHandler2,
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor)],
diff --git a/packages/frontend/src/pages/user/activity.following.vue b/packages/frontend/src/pages/user/activity.following.vue
index d1cfa5356b..4310c7ad85 100644
--- a/packages/frontend/src/pages/user/activity.following.vue
+++ b/packages/frontend/src/pages/user/activity.following.vue
@@ -161,7 +161,9 @@ async function renderChart() {
},
external: externalTooltipHandler,
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)],
diff --git a/packages/frontend/src/pages/user/activity.notes.vue b/packages/frontend/src/pages/user/activity.notes.vue
index 1cf7a00716..6d9c1bedd9 100644
--- a/packages/frontend/src/pages/user/activity.notes.vue
+++ b/packages/frontend/src/pages/user/activity.notes.vue
@@ -160,7 +160,9 @@ async function renderChart() {
},
external: externalTooltipHandler,
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)],
diff --git a/packages/frontend/src/pages/user/activity.pv.vue b/packages/frontend/src/pages/user/activity.pv.vue
index 2539a6777b..76df53becd 100644
--- a/packages/frontend/src/pages/user/activity.pv.vue
+++ b/packages/frontend/src/pages/user/activity.pv.vue
@@ -154,8 +154,6 @@ async function renderChart() {
display: true,
text: 'Unique/Natural PV',
padding: {
- left: 0,
- right: 0,
top: 0,
bottom: 12,
},
@@ -171,7 +169,9 @@ async function renderChart() {
},
external: externalTooltipHandler,
},
- gradient,
+ ...({ // TSを黙らすため
+ gradient,
+ }),
},
},
plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)],
diff --git a/packages/frontend/src/utility/chart-legend.ts b/packages/frontend/src/utility/chart-legend.ts
index fcbddf5669..490d6c4497 100644
--- a/packages/frontend/src/utility/chart-legend.ts
+++ b/packages/frontend/src/utility/chart-legend.ts
@@ -6,9 +6,11 @@
import type { Plugin } from 'chart.js';
import MkChartLegend from '@/components/MkChartLegend.vue';
-export const chartLegend = (legend: InstanceType
) => ({
+export const chartLegend = (legend: InstanceType | null | undefined) => ({
id: 'htmlLegend',
afterUpdate(chart, args, options) {
+ if (legend == null) return;
+
// Reuse the built-in legendItems generator
const items = chart.options.plugins!.legend!.labels!.generateLabels!(chart);
From 782c9f9852a7bc0e44d5aba7f92d0ac9c02153d6 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 12:33:44 +0900
Subject: [PATCH 07/28] refactor
---
packages/frontend/src/components/MkInput.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue
index 955bf72a6b..7f052dff94 100644
--- a/packages/frontend/src/components/MkInput.vue
+++ b/packages/frontend/src/components/MkInput.vue
@@ -44,10 +44,10 @@ SPDX-License-Identifier: AGPL-3.0-only
From 3c998e1f482c933aa22e597c79978bfe618845eb Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 12:59:53 +0900
Subject: [PATCH 08/28] refactor
---
.../frontend/src/components/MkChartTooltip.vue | 4 ++--
.../src/components/page/page.image.vue | 2 +-
.../frontend/src/components/page/page.note.vue | 2 +-
.../src/components/page/page.section.vue | 2 +-
.../frontend/src/components/page/page.text.vue | 2 +-
packages/frontend/src/instance.ts | 6 ++++++
packages/frontend/src/pages/admin/branding.vue | 15 ++++++++++-----
.../src/pages/admin/email-settings.vue | 2 +-
.../pages/admin/federation-job-queue.chart.vue | 16 ++++++++--------
.../frontend/src/pages/emoji-edit-dialog.vue | 2 +-
.../src/pages/settings/2fa.qrdialog.vue | 4 ++--
.../frontend/src/pages/settings/statusbar.vue | 3 ++-
packages/frontend/src/preferences/def.ts | 18 ++++++++++--------
13 files changed, 46 insertions(+), 32 deletions(-)
diff --git a/packages/frontend/src/components/MkChartTooltip.vue b/packages/frontend/src/components/MkChartTooltip.vue
index 51081ede23..b9d2c8219a 100644
--- a/packages/frontend/src/components/MkChartTooltip.vue
+++ b/packages/frontend/src/components/MkChartTooltip.vue
@@ -25,12 +25,12 @@ defineProps<{
showing: boolean;
x: number;
y: number;
- title?: string;
+ title?: string | null;
series?: {
backgroundColor: string;
borderColor: string;
text: string;
- }[];
+ }[] | null;
}>();
const emit = defineEmits<{
diff --git a/packages/frontend/src/components/page/page.image.vue b/packages/frontend/src/components/page/page.image.vue
index 69443ce7dd..7e8d8f7bfb 100644
--- a/packages/frontend/src/components/page/page.image.vue
+++ b/packages/frontend/src/components/page/page.image.vue
@@ -15,7 +15,7 @@ import * as Misskey from 'misskey-js';
import MkMediaList from '@/components/MkMediaList.vue';
const props = defineProps<{
- block: Misskey.entities.PageBlock,
+ block: Extract,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/components/page/page.note.vue b/packages/frontend/src/components/page/page.note.vue
index df26874c17..bae05b9765 100644
--- a/packages/frontend/src/components/page/page.note.vue
+++ b/packages/frontend/src/components/page/page.note.vue
@@ -18,7 +18,7 @@ import MkNoteDetailed from '@/components/MkNoteDetailed.vue';
import { misskeyApi } from '@/utility/misskey-api.js';
const props = defineProps<{
- block: Misskey.entities.PageBlock,
+ block: Extract,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/components/page/page.section.vue b/packages/frontend/src/components/page/page.section.vue
index e3d26d924f..05c12b3b83 100644
--- a/packages/frontend/src/components/page/page.section.vue
+++ b/packages/frontend/src/components/page/page.section.vue
@@ -29,7 +29,7 @@ import * as Misskey from 'misskey-js';
const XBlock = defineAsyncComponent(() => import('./page.block.vue'));
defineProps<{
- block: Misskey.entities.PageBlock,
+ block: Extract,
h: number,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/components/page/page.text.vue b/packages/frontend/src/components/page/page.text.vue
index a00eb0b5ca..792f6529d8 100644
--- a/packages/frontend/src/components/page/page.text.vue
+++ b/packages/frontend/src/components/page/page.text.vue
@@ -22,7 +22,7 @@ import { isEnabledUrlPreview } from '@/utility/url-preview.js';
const MkUrlPreview = defineAsyncComponent(() => import('@/components/MkUrlPreview.vue'));
const props = defineProps<{
- block: Misskey.entities.PageBlock,
+ block: Extract,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/instance.ts b/packages/frontend/src/instance.ts
index a5397f0c0d..c9d83a4dbe 100644
--- a/packages/frontend/src/instance.ts
+++ b/packages/frontend/src/instance.ts
@@ -51,3 +51,9 @@ export async function fetchInstance(force = false): Promise(meta.clientOptions.entrancePageStyle ?? 'classic');
+// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+const showTimelineForVisitor = ref(meta.clientOptions.showTimelineForVisitor ?? true);
+// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+const showActivitiesForVisitor = ref(meta.clientOptions.showActivitiesForVisitor ?? true);
+
const iconUrl = ref(meta.iconUrl);
const app192IconUrl = ref(meta.app192IconUrl);
const app512IconUrl = ref(meta.app512IconUrl);
@@ -186,11 +191,11 @@ const manifestJsonOverride = ref(meta.manifestJsonOverride === '' ? '{}' : JSON.
function save() {
os.apiWithDialog('admin/update-meta', {
- clientOptions: {
+ clientOptions: ({
entrancePageStyle: entrancePageStyle.value,
showTimelineForVisitor: showTimelineForVisitor.value,
showActivitiesForVisitor: showActivitiesForVisitor.value,
- },
+ } as ClientOptions) as any,
iconUrl: iconUrl.value,
app192IconUrl: app192IconUrl.value,
app512IconUrl: app512IconUrl.value,
diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue
index 8eb403f94c..340391a12f 100644
--- a/packages/frontend/src/pages/admin/email-settings.vue
+++ b/packages/frontend/src/pages/admin/email-settings.vue
@@ -107,7 +107,7 @@ const smtpPass = ref(meta.smtpPass);
async function testEmail() {
const { canceled, result: destination } = await os.inputText({
- title: i18n.ts.destination,
+ title: 'To',
type: 'email',
default: instance.maintainerEmail ?? '',
placeholder: 'test@example.com',
diff --git a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue
index b17eceadde..d449801985 100644
--- a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue
+++ b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue
@@ -81,10 +81,10 @@ function onStats(stats: Misskey.entities.QueueStats) {
delayed.value = stats[props.domain].delayed;
waiting.value = stats[props.domain].waiting;
- chartProcess.value.pushData(stats[props.domain].activeSincePrevTick);
- chartActive.value.pushData(stats[props.domain].active);
- chartDelayed.value.pushData(stats[props.domain].delayed);
- chartWaiting.value.pushData(stats[props.domain].waiting);
+ if (chartProcess.value != null) chartProcess.value.pushData(stats[props.domain].activeSincePrevTick);
+ if (chartActive.value != null) chartActive.value.pushData(stats[props.domain].active);
+ if (chartDelayed.value != null) chartDelayed.value.pushData(stats[props.domain].delayed);
+ if (chartWaiting.value != null) chartWaiting.value.pushData(stats[props.domain].waiting);
}
function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) {
@@ -100,10 +100,10 @@ function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) {
dataWaiting.push(stats[props.domain].waiting);
}
- chartProcess.value.setData(dataProcess);
- chartActive.value.setData(dataActive);
- chartDelayed.value.setData(dataDelayed);
- chartWaiting.value.setData(dataWaiting);
+ if (chartProcess.value != null) chartProcess.value.setData(dataProcess);
+ if (chartActive.value != null) chartActive.value.setData(dataActive);
+ if (chartDelayed.value != null) chartDelayed.value.setData(dataDelayed);
+ if (chartWaiting.value != null) chartWaiting.value.setData(dataWaiting);
}
onMounted(() => {
diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue
index 201ce003f0..033e3376a5 100644
--- a/packages/frontend/src/pages/emoji-edit-dialog.vue
+++ b/packages/frontend/src/pages/emoji-edit-dialog.vue
@@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.name }}
-
+
{{ i18n.ts.category }}
diff --git a/packages/frontend/src/pages/settings/2fa.qrdialog.vue b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
index 5bb125e67c..780040f699 100644
--- a/packages/frontend/src/pages/settings/2fa.qrdialog.vue
+++ b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
@@ -135,7 +135,7 @@ const emit = defineEmits<{
const dialog = useTemplateRef('dialog');
const page = ref(0);
-const token = ref(null);
+const token = ref(null);
const backupCodes = ref();
function cancel() {
@@ -145,7 +145,7 @@ function cancel() {
async function tokenDone() {
if (token.value == null) return;
const res = await os.apiWithDialog('i/2fa/done', {
- token: typeof token.value === 'string' ? token.value : token.value.toString(),
+ token: token.value.toString(), // 実装ミスなどでnumberが入る可能性を払拭できないため念のためtoString
});
backupCodes.value = res.backupCodes;
diff --git a/packages/frontend/src/pages/settings/statusbar.vue b/packages/frontend/src/pages/settings/statusbar.vue
index 2db9f7e6f9..1d0fadabd7 100644
--- a/packages/frontend/src/pages/settings/statusbar.vue
+++ b/packages/frontend/src/pages/settings/statusbar.vue
@@ -17,8 +17,8 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue
index 052829ffe2..63d3640f9c 100644
--- a/packages/frontend/src/pages/admin-file.vue
+++ b/packages/frontend/src/pages/admin-file.vue
@@ -4,197 +4,43 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
-
-
-
-
-
-
-
- MIME Type
- {{ file.type }}
-
-
- Size
- {{ bytes(file.size) }}
-
-
- ID
- {{ file.id }}
-
-
- MD5
- {{ file.md5 }}
-
-
- {{ i18n.ts.createdAt }}
-
-
-
-
-
-
-
-
- {{ i18n.ts.sensitive }}
-
-
-
- {{ i18n.ts.delete }}
-
-
-
-
-
-
-
-
- {{ i18n.ts.requireAdminForView }}
-
- IP
- {{ info.requestIp }}
-
-
- Headers
-
- {{ k }}
- {{ v }}
-
-
-
-
-
-
-
-
-
+
+Error: {{ error }}
+
-
-
From 959e72b2b34968d9b3188776cf2843a2f69bf8b2 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 14:02:14 +0900
Subject: [PATCH 10/28] refactor
---
packages/backend/src/core/RoleService.ts | 1 +
packages/backend/src/models/Notification.ts | 1 +
packages/frontend-shared/js/const.ts | 62 -------------------
.../components/MkNotificationSelectWindow.vue | 2 +-
.../src/components/MkServerSetupWizard.vue | 1 -
.../MkStreamingNotificationsTimeline.vue | 2 +-
.../frontend/src/pages/admin/roles.editor.vue | 5 +-
packages/frontend/src/pages/admin/roles.vue | 6 +-
packages/frontend/src/pages/notifications.vue | 2 +-
.../src/pages/settings/notifications.vue | 2 +-
.../src/widgets/WidgetNotifications.vue | 2 +-
packages/misskey-js/src/consts.ts | 62 ++++++++++++++++++-
packages/misskey-js/src/index.ts | 1 +
13 files changed, 75 insertions(+), 74 deletions(-)
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index 3df7ee69ee..7dc07ef4dd 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -31,6 +31,7 @@ import { FanoutTimelineService } from '@/core/FanoutTimelineService.js';
import { NotificationService } from '@/core/NotificationService.js';
import type { OnApplicationShutdown, OnModuleInit } from '@nestjs/common';
+// misskey-js の rolePolicies と同期すべし
export type RolePolicies = {
gtlAvailable: boolean;
ltlAvailable: boolean;
diff --git a/packages/backend/src/models/Notification.ts b/packages/backend/src/models/Notification.ts
index 5764a307b0..0b4eeb3455 100644
--- a/packages/backend/src/models/Notification.ts
+++ b/packages/backend/src/models/Notification.ts
@@ -10,6 +10,7 @@ import { MiAccessToken } from './AccessToken.js';
import { MiRole } from './Role.js';
import { MiDriveFile } from './DriveFile.js';
+// misskey-js の notificationTypes と同期すべし
export type MiNotification = {
type: 'note';
id: string;
diff --git a/packages/frontend-shared/js/const.ts b/packages/frontend-shared/js/const.ts
index b2d83fff8b..c8c437afe9 100644
--- a/packages/frontend-shared/js/const.ts
+++ b/packages/frontend-shared/js/const.ts
@@ -54,68 +54,6 @@ https://github.com/sindresorhus/file-type/blob/main/core.js
https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers
*/
-export const notificationTypes = [
- 'note',
- 'follow',
- 'mention',
- 'reply',
- 'renote',
- 'quote',
- 'reaction',
- 'pollEnded',
- 'receiveFollowRequest',
- 'followRequestAccepted',
- 'roleAssigned',
- 'chatRoomInvitationReceived',
- 'achievementEarned',
- 'exportCompleted',
- 'login',
- 'createToken',
- 'test',
- 'app',
-] as const;
-export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const;
-
-export const ROLE_POLICIES = [
- 'gtlAvailable',
- 'ltlAvailable',
- 'canPublicNote',
- 'mentionLimit',
- 'canInvite',
- 'inviteLimit',
- 'inviteLimitCycle',
- 'inviteExpirationTime',
- 'canManageCustomEmojis',
- 'canManageAvatarDecorations',
- 'canSearchNotes',
- 'canSearchUsers',
- 'canUseTranslator',
- 'canHideAds',
- 'driveCapacityMb',
- 'maxFileSizeMb',
- 'alwaysMarkNsfw',
- 'canUpdateBioMedia',
- 'pinLimit',
- 'antennaLimit',
- 'wordMuteLimit',
- 'webhookLimit',
- 'clipLimit',
- 'noteEachClipsLimit',
- 'userListLimit',
- 'userEachUserListsLimit',
- 'rateLimitFactor',
- 'avatarDecorationLimit',
- 'canImportAntennas',
- 'canImportBlocking',
- 'canImportFollowing',
- 'canImportMuting',
- 'canImportUserLists',
- 'chatAvailability',
- 'uploadableFileTypes',
- 'noteDraftLimit',
- 'watermarkAvailable',
-] as const;
-
export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'border', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime'];
export const MFM_PARAMS: Record = {
tada: ['speed=', 'delay='],
diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue
index bb01a008bd..7205e516d2 100644
--- a/packages/frontend/src/components/MkNotificationSelectWindow.vue
+++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue
@@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
diff --git a/packages/frontend/src/pages/gallery/edit.vue b/packages/frontend/src/pages/gallery/edit.vue
index 09bc6375ac..12d1a37390 100644
--- a/packages/frontend/src/pages/gallery/edit.vue
+++ b/packages/frontend/src/pages/gallery/edit.vue
@@ -4,161 +4,35 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
-
-
-
- {{ i18n.ts.title }}
-
-
-
- {{ i18n.ts.description }}
-
-
-
-
-
{{ i18n.ts.attachFile }}
-
-
- {{ i18n.ts.markAsSensitive }}
-
-
- {{ i18n.ts.save }}
- {{ i18n.ts.publish }}
-
- {{ i18n.ts.delete }}
-
-
-
-
+
+
+
-
-
From 2ccf4f94cb85f7732bc884792cdbc631c468a873 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 1 Sep 2025 16:51:58 +0900
Subject: [PATCH 15/28] refactor
---
.../src/pages/page-editor/els/page-editor.el.section.vue | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
index 11f83b6ec6..cf5712a8e5 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
@@ -24,8 +24,8 @@ SPDX-License-Identifier: AGPL-3.0-only
import { defineAsyncComponent, inject, onMounted, watch, ref } from 'vue';
import * as Misskey from 'misskey-js';
-import { genId } from '@/utility/id.js';
import XContainer from '../page-editor.container.vue';
+import { genId } from '@/utility/id.js';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { deepClone } from '@/utility/clone.js';
@@ -35,11 +35,11 @@ import { getPageBlockList } from '@/pages/page-editor/common.js';
const XBlocks = defineAsyncComponent(() => import('../page-editor.blocks.vue'));
const props = defineProps<{
- modelValue: Misskey.entities.PageBlock & { type: 'section'; },
+ modelValue: Extract,
}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'section' }): void;
+ (ev: 'update:modelValue', value: Extract): void;
(ev: 'remove'): void;
}>();
@@ -59,7 +59,7 @@ async function rename() {
title: i18n.ts._pages.enterSectionTitle,
default: props.modelValue.title,
});
- if (canceled) return;
+ if (canceled || title == null) return;
emit('update:modelValue', {
...props.modelValue,
title,
From ffc481a99450cd8ff3222c8679816f00fbfee548 Mon Sep 17 00:00:00 2001
From: anatawa12
Date: Tue, 2 Sep 2025 10:11:50 +0900
Subject: [PATCH 16/28] =?UTF-8?q?fix:=20=E3=80=8C=E8=87=AA=E5=8B=95?=
=?UTF-8?q?=E3=81=A7=E3=82=82=E3=81=A3=E3=81=A8=E8=A6=8B=E3=82=8B=E3=80=8D?=
=?UTF-8?q?=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=81=8C=E3=81=A7=E3=81=8D=E3=81=AA?=
=?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C=20(#16500)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/src/pages/settings/preferences.vue | 2 --
1 file changed, 2 deletions(-)
diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue
index fdf2373bfc..ba35dd7f43 100644
--- a/packages/frontend/src/pages/settings/preferences.vue
+++ b/packages/frontend/src/pages/settings/preferences.vue
@@ -110,7 +110,6 @@ SPDX-License-Identifier: AGPL-3.0-only
-