From 4254f52cedeee629ac4913f9190d9d75b78d2f77 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 31 May 2025 18:06:59 +0900 Subject: [PATCH 1/6] New Crowdin updates (#16126) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) --- locales/ca-ES.yml | 1 + locales/en-US.yml | 1 + locales/zh-TW.yml | 2 ++ 3 files changed, 4 insertions(+) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 64af3b1a03..c887397301 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1330,6 +1330,7 @@ restore: "Restaurar " syncBetweenDevices: "Sincronització entre dispositius" preferenceSyncConflictTitle: "Els valors de la configuració ja existeixen al dispositiu" preferenceSyncConflictText: "Un element de la configuració amb sincronització activada desa els seus valors al servidor, però s'ha trobat un valor a la configuració desat al servidor per aquest element de la configuració. Quin valor us sobreescriure?" +preferenceSyncConflictChoiceMerge: "Integració " preferenceSyncConflictChoiceServer: "Valors de configuració del servidor" preferenceSyncConflictChoiceDevice: "Punts d'ajustos del dispositiu " preferenceSyncConflictChoiceCancel: "Cancel·lar l'activació de la sincronització " diff --git a/locales/en-US.yml b/locales/en-US.yml index 1718d6711a..492a9f2887 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1330,6 +1330,7 @@ restore: "Restore" syncBetweenDevices: "Sync between devices" preferenceSyncConflictTitle: "The configured value exists on the server." preferenceSyncConflictText: "The sync enabled settings will save their values to the server. However, there are existing values on the server. Which set of values would you like to overwrite?" +preferenceSyncConflictChoiceMerge: "Merge" preferenceSyncConflictChoiceServer: "Configured value on server" preferenceSyncConflictChoiceDevice: "Configured value on device" preferenceSyncConflictChoiceCancel: "Cancel enabling sync" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 70219df019..e4d7d69e46 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -327,6 +327,7 @@ dark: "深色" lightThemes: "淺色佈景主題" darkThemes: "深色佈景主題" syncDeviceDarkMode: "與裝置的深色模式同步" +switchDarkModeManuallyWhenSyncEnabledConfirm: "「{x}」已開啟。要關閉同步並手動切換模式嗎?\n" drive: "雲端硬碟" fileName: "檔案名稱" selectFile: "選擇檔案" @@ -1329,6 +1330,7 @@ restore: "還原" syncBetweenDevices: "裝置之間的同步化" preferenceSyncConflictTitle: "伺服器上存在設定值" preferenceSyncConflictText: "已啟用同步的設定項目會將設定值儲存至伺服器,並已找到該設定項目在伺服器上儲存的設定值。請選擇要使用哪個設定值進行覆寫。" +preferenceSyncConflictChoiceMerge: "合併至" preferenceSyncConflictChoiceServer: "伺服器設定值" preferenceSyncConflictChoiceDevice: "裝置的設定值" preferenceSyncConflictChoiceCancel: "取消啟用同步" From 21344f76952211c558c0b95d466d69f47f1dadbe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 31 May 2025 12:37:02 +0000 Subject: [PATCH 2/6] Release: 2025.5.1 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8b843619eb..4ad351a382 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.5.1-beta.6", + "version": "2025.5.1", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 9465b00622..151ffca622 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.5.1-beta.6", + "version": "2025.5.1", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 777ca150838b5b03e53f0b712829a109d6c65374 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 31 May 2025 12:37:08 +0000 Subject: [PATCH 3/6] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index edca4339cb..dae488a735 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.5.1 ### Note From c5d33661b22da423d82d5c5ce20a1a5a056c8116 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 1 Jun 2025 07:57:18 +0900 Subject: [PATCH 4/6] chore(frontend): improve type def --- packages/frontend/src/preferences/def.ts | 10 +++++----- packages/frontend/src/preferences/manager.ts | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index 86d5c8af98..2cbeea2883 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -6,12 +6,12 @@ import * as Misskey from 'misskey-js'; import { hemisphere } from '@@/js/intl-const.js'; import { v4 as uuid } from 'uuid'; +import { definePreferences } from './manager.js'; import type { Theme } from '@/theme.js'; import type { SoundType } from '@/utility/sound.js'; import type { Plugin } from '@/plugin.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { DeckProfile } from '@/deck.js'; -import type { PreferencesDefinition } from './manager.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; import { deepEqual } from '@/utility/deep-equal.js'; @@ -33,7 +33,7 @@ export type SoundStore = { // NOTE: デフォルト値は他の設定の状態に依存してはならない(依存していた場合、ユーザーがその設定項目単体で「初期値にリセット」した場合不具合の原因になる) -export const PREF_DEF = { +export const PREF_DEF = definePreferences({ accounts: { default: [] as [host: string, user: { id: string; @@ -88,7 +88,7 @@ export const PREF_DEF = { emojis: string[]; }[], mergeStrategy: (a, b) => { - const mergedItems = [] as (typeof a)[]; + const mergedItems = [] as typeof a; for (const x of a.concat(b)) { const sameIdItem = mergedItems.find(y => y.id === x.id); if (sameIdItem != null) { @@ -119,7 +119,7 @@ export const PREF_DEF = { themes: { default: [] as Theme[], mergeStrategy: (a, b) => { - const mergedItems = [] as (typeof a)[]; + const mergedItems = [] as typeof a; for (const x of a.concat(b)) { const sameIdItem = mergedItems.find(y => y.id === x.id); if (sameIdItem != null) { @@ -464,4 +464,4 @@ export const PREF_DEF = { 'experimental.enableFolderPageView': { default: false, }, -} satisfies PreferencesDefinition; +}); diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts index cede145e74..603aac851c 100644 --- a/packages/frontend/src/preferences/manager.ts +++ b/packages/frontend/src/preferences/manager.ts @@ -96,6 +96,14 @@ type PreferencesDefinitionRecord export type PreferencesDefinition = Record>; +export function definePreferences>(x: { + [K in keyof T]: PreferencesDefinitionRecord +}): { + [K in keyof T]: PreferencesDefinitionRecord + } { + return x; +} + export function getInitialPrefValue(k: K): ValueOf { if (typeof PREF_DEF[k].default === 'function') { // factory return PREF_DEF[k].default(); From 070a4516fce4c6fc1dfc72345807d8b3f600a57b Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 1 Jun 2025 07:57:22 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=8E=A8?= 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, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 18dfc2250c..05e491ae37 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -604,7 +604,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
{{ i18n.ts._clientPerformanceIssueTip.title }}
+
{{ i18n.ts._clientPerformanceIssueTip.title }}:
{{ i18n.ts._clientPerformanceIssueTip.makeSureDisabledAdBlocker }}
{{ i18n.ts._clientPerformanceIssueTip.makeSureDisabledAdBlocker_description }}
From 5bdbff19ae4feaa39b0d3241c233236bfcd3179e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 1 Jun 2025 08:10:49 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix(frontend):=20=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E3=81=AE=E7=B5=B5=E6=96=87=E5=AD=97=E3=81=8C=E9=87=8D=E8=A4=87?= =?UTF-8?q?=E3=81=97=E3=81=A6=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #16130 --- CHANGELOG.md | 2 +- .../frontend/src/composables/use-note-capture.ts | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dae488a735..d3a0e3195f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: リアクションの一部の絵文字が重複して表示されることがある問題を修正 ### Server - diff --git a/packages/frontend/src/composables/use-note-capture.ts b/packages/frontend/src/composables/use-note-capture.ts index 90a5922b3e..2aeb9074e5 100644 --- a/packages/frontend/src/composables/use-note-capture.ts +++ b/packages/frontend/src/composables/use-note-capture.ts @@ -194,9 +194,9 @@ export function useNoteCapture(props: { parentNote: Misskey.entities.Note | null; mock?: boolean; }): { - $note: Reactive; - subscribe: () => void; -} { + $note: Reactive; + subscribe: () => void; + } { const { note, parentNote, mock } = props; const $note = reactive({ @@ -225,8 +225,8 @@ export function useNoteCapture(props: { let latestPollVotedKey: string | null = null; function onReacted(ctx: { userId: Misskey.entities.User['id']; reaction: string; emoji?: { name: string; url: string; }; }): void { - const normalizedName = ctx.reaction.replace(/^:(\w+):$/, ':$1@.:'); - + let normalizedName = ctx.reaction.replace(/^:(\w+):$/, ':$1@.:'); + normalizedName = normalizedName.match('\u200d') ? normalizedName : normalizedName.replace(/\ufe0f/g, ''); if (reactionUserMap.has(ctx.userId) && reactionUserMap.get(ctx.userId) === normalizedName) return; reactionUserMap.set(ctx.userId, normalizedName); @@ -245,7 +245,8 @@ export function useNoteCapture(props: { } function onUnreacted(ctx: { userId: Misskey.entities.User['id']; reaction: string; emoji?: { name: string; url: string; }; }): void { - const normalizedName = ctx.reaction.replace(/^:(\w+):$/, ':$1@.:'); + let normalizedName = ctx.reaction.replace(/^:(\w+):$/, ':$1@.:'); + normalizedName = normalizedName.match('\u200d') ? normalizedName : normalizedName.replace(/\ufe0f/g, ''); // 確実に一度リアクションされて取り消されている場合のみ処理をとめる(APIで初回読み込み→Streamでアップデート等の場合、reactionUserMapに情報がないため) if (reactionUserMap.has(ctx.userId) && reactionUserMap.get(ctx.userId) === noReaction) return;