From 21b2b9e5f8e5c995ff380b9bc25e7367b2da1da4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 31 Aug 2025 08:42:45 +0000 Subject: [PATCH 01/19] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a88ba3aca0..bc9526ec88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.8.0 ### Note From c95092903a37159aa73073e31519ed363ed404b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 31 Aug 2025 19:53:38 +0900 Subject: [PATCH 02/19] =?UTF-8?q?refactor(frontend):=20=E3=83=95=E3=83=AD?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=82=A8=E3=83=B3=E3=83=89=E3=81=AE=E5=9E=8B?= =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E8=A7=A3=E6=B6=88=EF=BC=88=E9=80=94?= =?UTF-8?q?=E4=B8=AD=E3=81=BE=E3=81=A7=EF=BC=89=20(#16477)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(frontend): フロントエンドの型エラー解消 * fix --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- package.json | 1 + packages/frontend/.storybook/fakes.ts | 2 +- packages/frontend/src/aiscript/api.ts | 2 +- .../frontend/src/components/MkAuthConfirm.vue | 6 +- .../src/components/MkAutocomplete.vue | 9 +- .../MkCropperDialog.stories.impl.ts | 2 +- packages/frontend/src/components/MkDrive.vue | 2 +- .../src/components/MkEmbedCodeGenDialog.vue | 2 +- .../frontend/src/components/MkFormDialog.vue | 28 +- packages/frontend/src/components/MkInput.vue | 26 +- .../src/components/MkInstanceStats.vue | 3 +- packages/frontend/src/components/MkNote.vue | 4 +- .../frontend/src/components/MkPagination.vue | 8 +- .../src/components/MkServerSetupWizard.vue | 27 +- .../src/components/MkSignupDialog.form.vue | 2 +- packages/frontend/tsconfig.json | 4 +- packages/misskey-js/etc/misskey-js.api.md | 1 + packages/misskey-js/src/entities.ts | 1 + pnpm-lock.yaml | 484 +++--------------- 19 files changed, 158 insertions(+), 456 deletions(-) diff --git a/package.json b/package.json index e4cec6aea6..328397e710 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ }, "devDependencies": { "@misskey-dev/eslint-plugin": "2.1.0", + "@types/js-yaml": "4.0.9", "@types/node": "22.17.2", "@typescript-eslint/eslint-plugin": "8.40.0", "@typescript-eslint/parser": "8.40.0", diff --git a/packages/frontend/.storybook/fakes.ts b/packages/frontend/.storybook/fakes.ts index 91ef41eedf..9cd8ac474c 100644 --- a/packages/frontend/.storybook/fakes.ts +++ b/packages/frontend/.storybook/fakes.ts @@ -127,7 +127,7 @@ export function galleryPost(isSensitive = false) { } } -export function file(isSensitive = false) { +export function file(isSensitive = false): entities.DriveFile { return { id: 'somefileid', createdAt: '2016-12-28T22:49:51.000Z', diff --git a/packages/frontend/src/aiscript/api.ts b/packages/frontend/src/aiscript/api.ts index a876e94ee8..0549ab76a0 100644 --- a/packages/frontend/src/aiscript/api.ts +++ b/packages/frontend/src/aiscript/api.ts @@ -86,7 +86,7 @@ export function createAiScriptEnv(opts: { storageKey: string, token?: string }) throw new errors.AiScriptRuntimeError('expected param'); } utils.assertObject(param); - return misskeyApi(ep.value, utils.valToJs(param) as object, actualToken).then(res => { + return misskeyApi(ep.value as keyof Misskey.Endpoints, utils.valToJs(param) as object, actualToken).then(res => { return utils.jsToVal(res); }, err => { return values.ERROR('request_failed', utils.jsToVal(err)); diff --git a/packages/frontend/src/components/MkAuthConfirm.vue b/packages/frontend/src/components/MkAuthConfirm.vue index b3331d742b..8744b50926 100644 --- a/packages/frontend/src/components/MkAuthConfirm.vue +++ b/packages/frontend/src/components/MkAuthConfirm.vue @@ -167,9 +167,13 @@ async function init() { for (const user of usersRes) { if (users.value.has(user.id)) continue; + const account = accounts.find(a => a.id === user.id); + + if (!account || account.token == null) continue; + users.value.set(user.id, { ...user, - token: accounts.find(a => a.id === user.id)!.token, + token: account.token, }); } } diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index e5b9533cd7..cf5d95e11b 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only - + ({{ emoji.aliasOf }}) @@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
    -
  1. +
  2. {{ param }}
@@ -194,6 +194,11 @@ const mfmParams = ref([]); const select = ref(-1); const zIndex = os.claimZIndex('high'); +function completeMfmParam(param: string) { + if (props.type !== 'mfmParam') throw new Error('Invalid type'); + complete('mfmParam', props.q.params.toSpliced(-1, 1, param).join(',')); +} + function complete(type: T, value: CompleteInfo[T]['payload']) { emit('done', { type, value }); emit('closed'); diff --git a/packages/frontend/src/components/MkCropperDialog.stories.impl.ts b/packages/frontend/src/components/MkCropperDialog.stories.impl.ts index bd6733f9a8..7ac3e2a2cd 100644 --- a/packages/frontend/src/components/MkCropperDialog.stories.impl.ts +++ b/packages/frontend/src/components/MkCropperDialog.stories.impl.ts @@ -38,7 +38,7 @@ export const Default = { }; }, args: { - file: file(), + imageFile: file(), aspectRatio: NaN, }, parameters: { diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index 9f1364aec4..19c98c3738 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -699,7 +699,7 @@ useGlobalEvent('driveFoldersDeleted', (folders) => { } }); -let connection: Misskey.ChannelConnection | null = null; +let connection: Misskey.IChannelConnection | null = null; onMounted(() => { if (store.s.realtimeMode) { diff --git a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue index d18fe0ed0c..17823deb85 100644 --- a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue +++ b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue @@ -160,7 +160,7 @@ const embedPreviewUrl = computed(() => { const isEmbedWithScrollbar = computed(() => embedRouteWithScrollbar.includes(props.entity)); const header = ref(props.params?.header ?? true); -const maxHeight = ref(props.params?.maxHeight !== 0 ? props.params?.maxHeight ?? undefined : 500); +const maxHeight = ref(props.params?.maxHeight !== 0 ? props.params?.maxHeight ?? null : 500); const colorMode = ref<'light' | 'dark' | 'auto'>(props.params?.colorMode ?? 'auto'); const rounded = ref(props.params?.rounded ?? true); diff --git a/packages/frontend/src/components/MkFormDialog.vue b/packages/frontend/src/components/MkFormDialog.vue index 6ac4441cac..8d697499a5 100644 --- a/packages/frontend/src/components/MkFormDialog.vue +++ b/packages/frontend/src/components/MkFormDialog.vue @@ -41,11 +41,11 @@ SPDX-License-Identifier: AGPL-3.0-only - + - + @@ -77,7 +77,7 @@ import MkRange from './MkRange.vue'; import MkButton from './MkButton.vue'; import MkRadios from './MkRadios.vue'; import XFile from './MkFormDialog.file.vue'; -import type { Form } from '@/utility/form.js'; +import type { EnumItem, Form, RadioFormItem } from '@/utility/form.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import { i18n } from '@/i18n.js'; @@ -99,7 +99,11 @@ const dialog = useTemplateRef('dialog'); const values = reactive({}); for (const item in props.form) { - values[item] = props.form[item].default ?? null; + if ('default' in props.form[item]) { + values[item] = props.form[item].default ?? null; + } else { + values[item] = null; + } } function ok() { @@ -115,4 +119,20 @@ function cancel() { }); dialog.value?.close(); } + +function getEnumLabel(e: EnumItem) { + return typeof e === 'string' ? e : e.label; +} + +function getEnumValue(e: EnumItem) { + return typeof e === 'string' ? e : e.value; +} + +function getEnumKey(e: EnumItem) { + return typeof e === 'string' ? e : typeof e.value === 'string' ? e.value : JSON.stringify(e.value); +} + +function getRadioKey(e: RadioFormItem['options'][number]) { + return typeof e.value === 'string' ? e.value : JSON.stringify(e.value); +} diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue index cc7ad8bb78..0c6f03d7d6 100644 --- a/packages/frontend/src/components/MkInput.vue +++ b/packages/frontend/src/components/MkInput.vue @@ -43,7 +43,15 @@ SPDX-License-Identifier: AGPL-3.0-only - + + diff --git a/packages/frontend/src/components/MkServerSetupWizard.vue b/packages/frontend/src/components/MkServerSetupWizard.vue index 1d2dfed297..5120d7541b 100644 --- a/packages/frontend/src/components/MkServerSetupWizard.vue +++ b/packages/frontend/src/components/MkServerSetupWizard.vue @@ -134,7 +134,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._serverSettings.entrancePageStyle }}:
-
{{ serverSettings.clientOptions.entrancePageStyle }}
+
{{ serverSettings.clientOptions?.entrancePageStyle }}
@@ -240,12 +240,12 @@ const serverSettings = computed(() => { enableReactionsBuffering, clientOptions: { entrancePageStyle: q_use.value === 'open' ? 'classic' : 'simple', - }, + } as any, }; }); -const defaultPolicies = computed>>(() => { - let driveCapacityMb; +const defaultPolicies = computed>(() => { + let driveCapacityMb: Misskey.entities.RolePolicies['driveCapacityMb'] | undefined; if (q_use.value === 'single') { driveCapacityMb = 8192; } else if (q_use.value === 'group') { @@ -254,7 +254,7 @@ const defaultPolicies = computed { diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue index 0f8713d4af..68ba09980a 100644 --- a/packages/frontend/src/components/MkSignupDialog.form.vue +++ b/packages/frontend/src/components/MkSignupDialog.form.vue @@ -66,7 +66,7 @@ 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 10/19] 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 - + 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 --> - - 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 12/19] 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 --> - - 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 17/19] 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 18/19] =?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 -
From 842670e10084b98a09acd195be566d43e8cab485 Mon Sep 17 00:00:00 2001 From: yukineko <27853966+hideki0403@users.noreply.github.com> Date: Tue, 2 Sep 2025 10:29:25 +0900 Subject: [PATCH 19/19] =?UTF-8?q?fix(frontend):=20RSS=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=83=83=E3=82=AB=E3=83=BC=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=8C=E6=AD=A3=E3=81=97=E3=81=8F=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#16498)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: RSSティッカーウィジェットが正しく機能しない問題を修正 * chore: update CHANGELOG.md --- CHANGELOG.md | 2 +- packages/frontend/src/widgets/WidgetRssTicker.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc9526ec88..f15a8c2bea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: RSSティッカーウィジェットが正しく動作しない問題を修正 ### Server - diff --git a/packages/frontend/src/widgets/WidgetRssTicker.vue b/packages/frontend/src/widgets/WidgetRssTicker.vue index 9d4feb784c..95f82f7d7b 100644 --- a/packages/frontend/src/widgets/WidgetRssTicker.vue +++ b/packages/frontend/src/widgets/WidgetRssTicker.vue @@ -31,7 +31,7 @@ import { ref, watch, computed } from 'vue'; import * as Misskey from 'misskey-js'; import { useWidgetPropsManager } from './widget.js'; import type { WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget.js'; -import MarqueeText from '@/components/MkMarqueeText.vue'; +import MkMarqueeText from '@/components/MkMarqueeText.vue'; import type { FormWithDefault, GetFormResultType } from '@/utility/form.js'; import MkContainer from '@/components/MkContainer.vue'; import { shuffle } from '@/utility/shuffle.js';