From 8af13a6502d070023e856a6b901920c291088b7b Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:22:54 +0900 Subject: [PATCH 01/11] =?UTF-8?q?enhance(backend):=20=E9=80=A3=E5=90=88?= =?UTF-8?q?=E3=81=99=E3=82=8B=E5=BF=85=E8=A6=81=E3=81=AE=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=95=E3=82=A3=E3=83=BC=E3=83=AB=E9=A0=85?= =?UTF-8?q?=E7=9B=AE=E3=81=97=E3=81=8B=E6=9B=B4=E6=96=B0=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=AB?= =?UTF-8?q?=E3=81=AFUpdate=E3=82=A2=E3=82=AF=E3=83=86=E3=82=A3=E3=83=93?= =?UTF-8?q?=E3=83=86=E3=82=A3=E3=82=92=E7=99=BA=E8=A1=8C=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/core/activitypub/ApRendererService.ts | 9 +++++---- packages/backend/src/misc/prelude/object.ts | 8 ++++++++ packages/backend/src/models/User.ts | 18 ++++++++++++++++++ packages/backend/src/models/UserProfile.ts | 9 +++++++++ .../src/server/api/endpoints/i/update.ts | 12 ++++++++++-- 5 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 packages/backend/src/misc/prelude/object.ts diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts index 98e944f347..e0715093df 100644 --- a/packages/backend/src/core/activitypub/ApRendererService.ts +++ b/packages/backend/src/core/activitypub/ApRendererService.ts @@ -9,7 +9,8 @@ import { In } from 'typeorm'; import * as mfm from 'mfm-js'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; -import type { MiPartialLocalUser, MiLocalUser, MiPartialRemoteUser, MiRemoteUser, MiUser } from '@/models/User.js'; +import type { MiPartialLocalUser, MiLocalUser, MiPartialRemoteUser, MiRemoteUser, MiUser, MiLocalUserForApPersonRender } from '@/models/User.js'; +import type { MiUserProfileForApPersonRender } from '@/models/UserProfile.js'; import type { IMentionedRemoteUsers, MiNote } from '@/models/Note.js'; import type { MiBlocking } from '@/models/Blocking.js'; import type { MiRelay } from '@/models/Relay.js'; @@ -251,7 +252,7 @@ export class ApRendererService { } @bindThis - public renderKey(user: MiLocalUser, key: MiUserKeypair, postfix?: string): IKey { + public renderKey(user: { id: MiUser['id'] }, key: MiUserKeypair, postfix?: string): IKey { return { id: `${this.config.url}/users/${user.id}${postfix ?? '/publickey'}`, type: 'Key', @@ -449,14 +450,14 @@ export class ApRendererService { } @bindThis - public async renderPerson(user: MiLocalUser) { + public async renderPerson(user: MiLocalUserForApPersonRender) { const id = this.userEntityService.genLocalUserUri(user.id); const isSystem = user.username.includes('.'); const [avatar, banner, profile] = await Promise.all([ user.avatarId ? this.driveFilesRepository.findOneBy({ id: user.avatarId }) : undefined, user.bannerId ? this.driveFilesRepository.findOneBy({ id: user.bannerId }) : undefined, - this.userProfilesRepository.findOneByOrFail({ userId: user.id }), + (this.userProfilesRepository.findOneByOrFail({ userId: user.id }) as Promise), ]); const attachment = profile.fields.map(field => ({ diff --git a/packages/backend/src/misc/prelude/object.ts b/packages/backend/src/misc/prelude/object.ts new file mode 100644 index 0000000000..daa18ce1da --- /dev/null +++ b/packages/backend/src/misc/prelude/object.ts @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export function keys(obj: T): (keyof T)[] { + return Object.keys(obj); +} diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts index 9e2d7a3444..758a2e4b91 100644 --- a/packages/backend/src/models/User.ts +++ b/packages/backend/src/models/User.ts @@ -285,6 +285,24 @@ export type MiPartialRemoteUser = Partial & { uri: string; } +export const miLocalUserKeysUsedForApPersonRender = [ + 'id', + 'username', + 'avatarId', + 'bannerId', + 'emojis', + 'tags', + 'isBot', + 'isCat', + 'name', + 'isLocked', + 'isExplorable', + 'movedToUri', + 'alsoKnownAs', +] as const satisfies (keyof MiLocalUser)[]; + +export type MiLocalUserForApPersonRender = Pick; + export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const; export const passwordSchema = { type: 'string', minLength: 1 } as const; export const nameSchema = { type: 'string', minLength: 1, maxLength: 50 } as const; diff --git a/packages/backend/src/models/UserProfile.ts b/packages/backend/src/models/UserProfile.ts index 7dbe0b3717..cf955f6e79 100644 --- a/packages/backend/src/models/UserProfile.ts +++ b/packages/backend/src/models/UserProfile.ts @@ -287,3 +287,12 @@ export class MiUserProfile { } } } + +export const miUserProfileKeysUsedForApPersonRender = [ + 'fields', + 'description', + 'birthday', + 'location', +] as const satisfies (keyof MiUserProfile)[]; + +export type MiUserProfileForApPersonRender = Pick; diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index a1e2fa5e4c..9111175e47 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -11,6 +11,7 @@ import { JSDOM } from 'jsdom'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractHashtags } from '@/misc/extract-hashtags.js'; import * as Acct from '@/misc/acct.js'; +import { keys } from '@/misc/prelude/object.js'; import type { UsersRepository, DriveFilesRepository, UserProfilesRepository, PagesRepository } from '@/models/_.js'; import type { MiLocalUser, MiUser } from '@/models/User.js'; import { birthdaySchema, descriptionSchema, locationSchema, nameSchema } from '@/models/User.js'; @@ -34,6 +35,8 @@ import type { Config } from '@/config.js'; import { safeForSql } from '@/misc/safe-for-sql.js'; import { AvatarDecorationService } from '@/core/AvatarDecorationService.js'; import { notificationRecieveConfig } from '@/models/json-schema/user.js'; +import { miLocalUserKeysUsedForApPersonRender } from '@/models/User.js'; +import { miUserProfileKeysUsedForApPersonRender } from '@/models/UserProfile.js'; import { ApiLoggerService } from '../../ApiLoggerService.js'; import { ApiError } from '../../error.js'; @@ -501,8 +504,13 @@ export default class extends Endpoint { // eslint- this.userFollowingService.acceptAllFollowRequests(user); } - // フォロワーにUpdateを配信 - this.accountUpdateService.publishToFollowers(user.id); + // 連合する必要があるプロパティが変更されている場合はフォロワーにUpdateを配信 + if ( + miLocalUserKeysUsedForApPersonRender.some(k => keys(updates).includes(k)) || + miUserProfileKeysUsedForApPersonRender.some(k => keys(profileUpdates).includes(k)) + ) { + this.accountUpdateService.publishToFollowers(user.id); + } const urls = updatedProfile.fields.filter(x => x.value.startsWith('https://')); for (const url of urls) { From 94663e1bf0fe098d7d5a334d7565661d9623ec78 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:30:31 +0900 Subject: [PATCH 02/11] =?UTF-8?q?=E8=A2=AB=E3=82=8A=E3=81=AB=E3=81=8F?= =?UTF-8?q?=E3=81=84=E5=90=8D=E5=89=8D=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/backend/src/misc/prelude/object.ts | 2 +- packages/backend/src/server/api/endpoints/i/update.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/misc/prelude/object.ts b/packages/backend/src/misc/prelude/object.ts index daa18ce1da..e74d461c69 100644 --- a/packages/backend/src/misc/prelude/object.ts +++ b/packages/backend/src/misc/prelude/object.ts @@ -3,6 +3,6 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -export function keys(obj: T): (keyof T)[] { +export function getObjKeys(obj: T): (keyof T)[] { return Object.keys(obj); } diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 9111175e47..cb0455862c 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -11,7 +11,7 @@ import { JSDOM } from 'jsdom'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractHashtags } from '@/misc/extract-hashtags.js'; import * as Acct from '@/misc/acct.js'; -import { keys } from '@/misc/prelude/object.js'; +import { getObjKeys } from '@/misc/prelude/object.js'; import type { UsersRepository, DriveFilesRepository, UserProfilesRepository, PagesRepository } from '@/models/_.js'; import type { MiLocalUser, MiUser } from '@/models/User.js'; import { birthdaySchema, descriptionSchema, locationSchema, nameSchema } from '@/models/User.js'; @@ -506,8 +506,8 @@ export default class extends Endpoint { // eslint- // 連合する必要があるプロパティが変更されている場合はフォロワーにUpdateを配信 if ( - miLocalUserKeysUsedForApPersonRender.some(k => keys(updates).includes(k)) || - miUserProfileKeysUsedForApPersonRender.some(k => keys(profileUpdates).includes(k)) + miLocalUserKeysUsedForApPersonRender.some(k => getObjKeys(updates).includes(k)) || + miUserProfileKeysUsedForApPersonRender.some(k => getObjKeys(profileUpdates).includes(k)) ) { this.accountUpdateService.publishToFollowers(user.id); } From 3de48a2a3dde2ec1fbe7a1af13a11f8187207c5b Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:31:59 +0900 Subject: [PATCH 03/11] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f429033aa0..3b3d342383 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ - Enhance: エンドポイント`i/webhook/update`の必須項目を`webhookId`のみに - Enhance: エンドポイント`admin/ad/update`の必須項目を`id`のみに - Enhance: `default.yml`内の`url`, `db.db`, `db.user`, `db.pass`を環境変数から読み込めるように +- Enhance: 連合する必要のないプロフィール項目しか更新されなかった場合には連合先にUpdateアクティビティを発行しないように - Fix: チャート生成時にinstance.suspensionStateに置き換えられたinstance.isSuspendedが参照されてしまう問題を修正 - Fix: ユーザーのフィードページのMFMをHTMLに展開するように (#14006) - Fix: アンテナ・クリップ・リスト・ウェブフックがロールポリシーの上限より一つ多く作れてしまうのを修正 (#14036) From a9c93331cc551e46b239a1cbc6b00bef905a8f84 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:10:56 +0900 Subject: [PATCH 04/11] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/src/core/activitypub/ApRendererService.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts index e0715093df..204a919ea8 100644 --- a/packages/backend/src/core/activitypub/ApRendererService.ts +++ b/packages/backend/src/core/activitypub/ApRendererService.ts @@ -454,6 +454,16 @@ export class ApRendererService { const id = this.userEntityService.genLocalUserUri(user.id); const isSystem = user.username.includes('.'); + /** + * 【profile について】 + * + * i/updateで虚無を連合するのを防止するための処理に伴い、 + * 使用できるプロパティを狭めて連合に使用するプロパティを増やした際に + * その変更を忘れないようにするためにasを使っている。 + * + * See https://github.com/misskey-dev/misskey/pull/14301 + */ + const [avatar, banner, profile] = await Promise.all([ user.avatarId ? this.driveFilesRepository.findOneBy({ id: user.avatarId }) : undefined, user.bannerId ? this.driveFilesRepository.findOneBy({ id: user.bannerId }) : undefined, From ff9c8401665dcf7658a8f821902d9b5d8753375f Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:11:39 +0900 Subject: [PATCH 05/11] typo --- packages/backend/src/core/activitypub/ApRendererService.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts index 204a919ea8..39649029ec 100644 --- a/packages/backend/src/core/activitypub/ApRendererService.ts +++ b/packages/backend/src/core/activitypub/ApRendererService.ts @@ -458,8 +458,9 @@ export class ApRendererService { * 【profile について】 * * i/updateで虚無を連合するのを防止するための処理に伴い、 - * 使用できるプロパティを狭めて連合に使用するプロパティを増やした際に - * その変更を忘れないようにするためにasを使っている。 + * 使用できるプロパティを狭めることで、連合に使用するプロパティを増やした際に + * miUserProfileKeysUsedForApPersonRenderを変更するのを + * 忘れないようにするためにasを使っている。 * * See https://github.com/misskey-dev/misskey/pull/14301 */ From 3b5cfc5d02ad8b3a281573184ce50555a47b54bf Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:36:59 +0900 Subject: [PATCH 06/11] =?UTF-8?q?enhance:=20=E5=A4=89=E6=9B=B4=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=83=91=E3=83=86=E3=82=A3=E3=82=92=E7=84=A1=E8=A6=96=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/server/api/endpoints/i/update.ts | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index cb0455862c..d684b43daf 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -477,15 +477,33 @@ export default class extends Endpoint { // eslint- this.hashtagService.updateUsertags(user, tags); //#endregion - if (Object.keys(updates).length > 0) { - await this.usersRepository.update(user.id, updates); + //#region 変更されていないプロパティを削除 + const _updates = getObjKeys(updates).reduce>((acc, key) => { + if (updates[key] != null && updates[key] !== user[key]) { + (acc[key] as MiUser[typeof key]) = updates[key]; + } + return acc; + }, {}); + + const _profileUpdates = getObjKeys(profileUpdates).reduce>((acc, key) => { + if (profileUpdates[key] != null && profileUpdates[key] !== profile[key]) { + (acc[key] as MiUserProfile[typeof key]) = profileUpdates[key]; + } + return acc; + }, {}); + //#endregion + + if (Object.keys(_updates).length > 0) { + await this.usersRepository.update(user.id, _updates); this.globalEventService.publishInternalEvent('localUserUpdated', { id: user.id }); } - await this.userProfilesRepository.update(user.id, { - ...profileUpdates, - verifiedLinks: [], - }); + if (Object.keys(_profileUpdates).length > 0 || profile.verifiedLinks.length > 0) { + await this.userProfilesRepository.update(user.id, { + ..._profileUpdates, + verifiedLinks: [], + }); + } const iObj = await this.userEntityService.pack(user.id, user, { schema: 'MeDetailed', @@ -506,8 +524,8 @@ export default class extends Endpoint { // eslint- // 連合する必要があるプロパティが変更されている場合はフォロワーにUpdateを配信 if ( - miLocalUserKeysUsedForApPersonRender.some(k => getObjKeys(updates).includes(k)) || - miUserProfileKeysUsedForApPersonRender.some(k => getObjKeys(profileUpdates).includes(k)) + miLocalUserKeysUsedForApPersonRender.some(k => getObjKeys(_updates).includes(k)) || + miUserProfileKeysUsedForApPersonRender.some(k => getObjKeys(_profileUpdates).includes(k)) ) { this.accountUpdateService.publishToFollowers(user.id); } From 8c5dda2c7678e312eeaa3c4791b8ce42a0fa9976 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:39:50 +0900 Subject: [PATCH 07/11] fix --- packages/backend/src/server/api/endpoints/i/update.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index d684b43daf..3c5b02d4bb 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -498,7 +498,11 @@ export default class extends Endpoint { // eslint- this.globalEventService.publishInternalEvent('localUserUpdated', { id: user.id }); } - if (Object.keys(_profileUpdates).length > 0 || profile.verifiedLinks.length > 0) { + if ( + Object.keys(_profileUpdates).length > 0 || + profile.fields.filter(x => x.value.startsWith('https://')).length > 0 || + profile.verifiedLinks.length > 0 + ) { await this.userProfilesRepository.update(user.id, { ..._profileUpdates, verifiedLinks: [], From 97729307621958306e411161922e1dab2bdc8f07 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:52:37 +0900 Subject: [PATCH 08/11] fix --- packages/backend/src/server/api/endpoints/i/update.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 3c5b02d4bb..b03528289d 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -479,14 +479,14 @@ export default class extends Endpoint { // eslint- //#region 変更されていないプロパティを削除 const _updates = getObjKeys(updates).reduce>((acc, key) => { - if (updates[key] != null && updates[key] !== user[key]) { + if (updates[key] !== undefined && updates[key] !== user[key]) { (acc[key] as MiUser[typeof key]) = updates[key]; } return acc; }, {}); const _profileUpdates = getObjKeys(profileUpdates).reduce>((acc, key) => { - if (profileUpdates[key] != null && profileUpdates[key] !== profile[key]) { + if (profileUpdates[key] !== undefined && profileUpdates[key] !== profile[key]) { (acc[key] as MiUserProfile[typeof key]) = profileUpdates[key]; } return acc; From 0e37cd2bc696cec4ca62f0c2678a575e9117b7f3 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri, 6 Sep 2024 17:17:56 +0900 Subject: [PATCH 09/11] use node util isDeepStrictEqual --- packages/backend/src/server/api/endpoints/i/update.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index b03528289d..05d5956465 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import { isDeepStrictEqual } from 'node:util'; import RE2 from 're2'; import * as mfm from 'mfm-js'; import { Inject, Injectable } from '@nestjs/common'; @@ -479,14 +480,14 @@ export default class extends Endpoint { // eslint- //#region 変更されていないプロパティを削除 const _updates = getObjKeys(updates).reduce>((acc, key) => { - if (updates[key] !== undefined && updates[key] !== user[key]) { + if (updates[key] !== undefined && !isDeepStrictEqual(updates[key], user[key])) { (acc[key] as MiUser[typeof key]) = updates[key]; } return acc; }, {}); const _profileUpdates = getObjKeys(profileUpdates).reduce>((acc, key) => { - if (profileUpdates[key] !== undefined && profileUpdates[key] !== profile[key]) { + if (profileUpdates[key] !== undefined && !isDeepStrictEqual(profileUpdates[key], profile[key])) { (acc[key] as MiUserProfile[typeof key]) = profileUpdates[key]; } return acc; From 70a55e507dbf39ead2350224fe29ae6d544b1fbe Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri, 6 Sep 2024 17:19:37 +0900 Subject: [PATCH 10/11] fix changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e36aa0885..ea40797d80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Fix: サーバーメトリクスが2つ以上あるとリロード直後の表示がおかしくなる問題を修正 ### Server +- Enhance: 連合する必要のないプロフィール項目しか更新されなかった場合には連合先にUpdateアクティビティを発行しないように - ファイルがサイズの制限を超えてアップロードされた際にエラーを返さなかった問題を修正 @@ -134,7 +135,6 @@ - Enhance: エンドポイント`admin/ad/update`の必須項目を`id`のみに - Enhance: `default.yml`内の`url`, `db.db`, `db.user`, `db.pass`を環境変数から読み込めるように - Enhance: エンドポイント`api/meta`にプロパティ`noteSearchableScope`が増え、`string`値`local`または`global`を返却します -- Enhance: 連合する必要のないプロフィール項目しか更新されなかった場合には連合先にUpdateアクティビティを発行しないように - Fix: チャート生成時にinstance.suspensionStateに置き換えられたinstance.isSuspendedが参照されてしまう問題を修正 - Fix: ユーザーのフィードページのMFMをHTMLに展開するように (#14006) - Fix: アンテナ・クリップ・リスト・ウェブフックがロールポリシーの上限より一つ多く作れてしまうのを修正 (#14036) From ebf436d41d9d30cc512add0239ce623808066a46 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: Fri, 8 Nov 2024 19:19:51 +0900 Subject: [PATCH 11/11] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8ee4089a6..65fd678baf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ - Enhance: 起動前の疎通チェックで、DBとメイン以外のRedisの疎通確認も行うように (Based on https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/588) (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/715) +- Enhance: 連合する必要のないプロフィール項目しか更新されなかった場合には連合先にUpdateアクティビティを発行しないように - fix(backend): フォロワーへのメッセージの絵文字をemojisに含めるように - Fix: Nested proxy requestsを検出した際にブロックするように [ghsa-gq5q-c77c-v236](https://github.com/misskey-dev/misskey/security/advisories/ghsa-gq5q-c77c-v236) @@ -136,7 +137,6 @@ ### Server - Feat: Misskey® Reactions Boost Technology™ (RBT)により、リアクションの作成負荷を低減することが可能に -- Enhance: 連合する必要のないプロフィール項目しか更新されなかった場合には連合先にUpdateアクティビティを発行しないように - Fix: アンテナの書き込み時にキーワードが与えられなかった場合のエラーをApiErrorとして投げるように - この変更により、公式フロントエンドでは入力の不備が内部エラーとして報告される代わりに一般的なエラーダイアログで報告されます - Fix: ファイルがサイズの制限を超えてアップロードされた際にエラーを返さなかった問題を修正