From bc07b79a234a021ca2d1e3ea6186501c74a89493 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:36:42 +0900 Subject: [PATCH 001/108] =?UTF-8?q?fix(frontend):=20=E3=83=87=E3=83=83?= =?UTF-8?q?=E3=82=AD=E3=81=AE=E3=82=BF=E3=82=A4=E3=83=A0=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=AB=E3=83=A9=E3=83=A0=E3=81=A7=E6=96=B0=E7=9D=80?= =?UTF-8?q?=E3=83=8E=E3=83=BC=E3=83=88=E6=99=82=E3=81=AE=E3=82=B5=E3=82=A6?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=81=8C=E5=86=8D=E7=94=9F=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=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 #16164 --- CHANGELOG.md | 1 + .../src/components/MkStreamingNotesTimeline.vue | 10 +++++++++- packages/frontend/src/ui/deck/tl-column.vue | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eb197ca64..6f7c7e6ab9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Fix: ユーザーの検索結果を追加で読み込むことができない問題を修正 - Fix: タッチ操作時にチャートのツールチップが消えなくなる場合がある問題を修正 - Fix: ウェルカムタイムラインでリアクションが表示されない問題を修正 +- Fix: デッキのタイムラインカラムで新着ノート時のサウンドが再生されない問題を修正 ### Server - Feat: 全てのチャットメッセージを既読にするAPIを追加(chat/read-all) diff --git a/packages/frontend/src/components/MkStreamingNotesTimeline.vue b/packages/frontend/src/components/MkStreamingNotesTimeline.vue index 576a0cf8cc..db9621e378 100644 --- a/packages/frontend/src/components/MkStreamingNotesTimeline.vue +++ b/packages/frontend/src/components/MkStreamingNotesTimeline.vue @@ -62,6 +62,7 @@ import { useInterval } from '@@/js/use-interval.js'; import { getScrollContainer, scrollToTop } from '@@/js/scroll.js'; import type { BasicTimelineType } from '@/timelines.js'; import type { PagingCtx } from '@/composables/use-pagination.js'; +import type { SoundStore } from '@/preferences/def.js'; import { usePagination } from '@/composables/use-pagination.js'; import MkPullToRefresh from '@/components/MkPullToRefresh.vue'; import { useStream } from '@/stream.js'; @@ -83,6 +84,7 @@ const props = withDefaults(defineProps<{ channel?: string; role?: string; sound?: boolean; + customSound?: SoundStore | null; withRenotes?: boolean; withReplies?: boolean; withSensitive?: boolean; @@ -92,6 +94,8 @@ const props = withDefaults(defineProps<{ withReplies: false, withSensitive: true, onlyFiles: false, + sound: false, + customSound: null, }); provide('inTimeline', true); @@ -190,7 +194,11 @@ function prepend(note: Misskey.entities.Note) { } if (props.sound) { - sound.playMisskeySfx($i && (note.userId === $i.id) ? 'noteMy' : 'note'); + if (props.customSound) { + sound.playMisskeySfxFile(props.customSound); + } else { + sound.playMisskeySfx($i && (note.userId === $i.id) ? 'noteMy' : 'note'); + } } } diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue index 97208f1c6a..37814f0914 100644 --- a/packages/frontend/src/ui/deck/tl-column.vue +++ b/packages/frontend/src/ui/deck/tl-column.vue @@ -26,6 +26,8 @@ SPDX-License-Identifier: AGPL-3.0-only :withReplies="withReplies" :withSensitive="withSensitive" :onlyFiles="onlyFiles" + :sound="true" + :customSound="soundSetting" /> From 8ea6aa2ef3f34184da66663978a2f8e3662ef640 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 14 Jun 2025 03:16:12 +0000 Subject: [PATCH 002/108] Bump version to 2025.6.1-rc.0 --- 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 58f412f8ea..d5294fa24e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.1-beta.2", + "version": "2025.6.1-rc.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index e8f60cf5b1..cb4010616c 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.1-beta.2", + "version": "2025.6.1-rc.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 32d721abf1929aa6b7f442c7ac6b695850717a8c 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: Sat, 14 Jun 2025 16:08:14 +0900 Subject: [PATCH 003/108] =?UTF-8?q?refactor(frontend):=20checkWordMute?= =?UTF-8?q?=E3=81=AE=E8=BF=94=E3=82=8A=E5=80=A4=E3=81=8C=E8=AA=A4=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20(#16188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(frontend): checkWordMuteの返り値が誤っている問題を修正 * fix lint --- packages/frontend/src/components/MkNote.vue | 24 ++++++++++++------- .../components/MkStreamingNotesTimeline.vue | 2 +- .../frontend/src/utility/get-note-menu.ts | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 3ca7455f0d..794a091f30 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -321,20 +321,27 @@ const pleaseLoginContext = computed(() => ({ url: `https://${host}/notes/${appearNote.id}`, })); -/* Overload FunctionにLintが対応していないのでコメントアウト +/* eslint-disable no-redeclare */ +/** checkOnlyでは純粋なワードミュート結果をbooleanで返却する */ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly: true): boolean; -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly: false): Array | false | 'sensitiveMute'; -*/ -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly = false): Array | false | 'sensitiveMute' { +function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly?: false): Array | false | 'sensitiveMute'; + +function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly = false): Array | boolean | 'sensitiveMute' { if (mutedWords != null) { const result = checkWordMute(noteToCheck, $i, mutedWords); - if (Array.isArray(result)) return result; + if (Array.isArray(result)) { + return checkOnly ? (result.length > 0) : result; + } const replyResult = noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords); - if (Array.isArray(replyResult)) return replyResult; + if (Array.isArray(replyResult)) { + return checkOnly ? (replyResult.length > 0) : replyResult; + } const renoteResult = noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords); - if (Array.isArray(renoteResult)) return renoteResult; + if (Array.isArray(renoteResult)) { + return checkOnly ? (renoteResult.length > 0) : renoteResult; + } } if (checkOnly) return false; @@ -345,6 +352,7 @@ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array { @@ -417,7 +425,7 @@ if (!props.mock) { const users = renotes.map(x => x.user); - if (users.length < 1) return; + if (users.length < 1 || renoteButton.value == null) return; const { dispose } = os.popup(MkUsersTooltip, { showing, diff --git a/packages/frontend/src/components/MkStreamingNotesTimeline.vue b/packages/frontend/src/components/MkStreamingNotesTimeline.vue index db9621e378..7e72840b7b 100644 --- a/packages/frontend/src/components/MkStreamingNotesTimeline.vue +++ b/packages/frontend/src/components/MkStreamingNotesTimeline.vue @@ -428,7 +428,7 @@ defineExpose({ background: var(--MI_THEME-panel); } -.note { +.note:not(:empty) { border-bottom: solid 0.5px var(--MI_THEME-divider); } diff --git a/packages/frontend/src/utility/get-note-menu.ts b/packages/frontend/src/utility/get-note-menu.ts index 5b99be5fdb..ea93444f08 100644 --- a/packages/frontend/src/utility/get-note-menu.ts +++ b/packages/frontend/src/utility/get-note-menu.ts @@ -542,7 +542,7 @@ function smallerVisibility(a: Visibility, b: Visibility): Visibility { export function getRenoteMenu(props: { note: Misskey.entities.Note; - renoteButton: ShallowRef; + renoteButton: ShallowRef; mock?: boolean; }) { const appearNote = getAppearNote(props.note); From 420756d744aef1ab985d2f9ef0eb8e9b7aa65433 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 14 Jun 2025 19:50:56 +0900 Subject: [PATCH 004/108] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f7c7e6ab9..aaf7ac0cfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Note - Misskey Webプラグインのnote_view_interruptorは不具合の影響により現在一時的に無効化されています。 +- Misskey Web投稿フォームのプレビュー切り替えは「...」メニュー内に配置されました ### Client - Feat: 画像にウォーターマークを付与できるようになりました From b33eeb13663b2321793c4127dcd4a1d108cefa53 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 08:47:59 +0900 Subject: [PATCH 005/108] enhance(frontend/image-effector): tweak distort fx --- .../src/utility/image-effector/fxs/distort.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/frontend/src/utility/image-effector/fxs/distort.ts b/packages/frontend/src/utility/image-effector/fxs/distort.ts index f91287c038..67ebc77733 100644 --- a/packages/frontend/src/utility/image-effector/fxs/distort.ts +++ b/packages/frontend/src/utility/image-effector/fxs/distort.ts @@ -9,6 +9,10 @@ import { i18n } from '@/i18n.js'; const shader = `#version 300 es precision mediump float; +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + in vec2 in_uv; uniform sampler2D in_texture; uniform vec2 in_resolution; @@ -20,8 +24,8 @@ out vec4 out_color; void main() { float v = u_direction == 0 ? - sin(u_phase + in_uv.y * u_frequency) * u_strength : - sin(u_phase + in_uv.x * u_frequency) * u_strength; + sin((HALF_PI + (u_phase * PI) - (u_frequency / 2.0)) + in_uv.y * u_frequency) * u_strength : + sin((HALF_PI + (u_phase * PI) - (u_frequency / 2.0)) + in_uv.x * u_frequency) * u_strength; vec4 in_color = u_direction == 0 ? texture(in_texture, vec2(in_uv.x + v, in_uv.y)) : texture(in_texture, vec2(in_uv.x, in_uv.y + v)); @@ -38,32 +42,32 @@ export const FX_distort = defineImageEffectorFx({ direction: { type: 'number:enum' as const, enum: [{ value: 0, label: 'v' }, { value: 1, label: 'h' }], - default: 0, + default: 1, }, phase: { type: 'number' as const, - default: 50.0, - min: 0.0, - max: 100, + default: 0.0, + min: -1.0, + max: 1.0, step: 0.01, }, frequency: { type: 'number' as const, - default: 50, + default: 30, min: 0, max: 100, step: 0.1, }, strength: { type: 'number' as const, - default: 0.1, + default: 0.05, min: 0, max: 1, step: 0.01, }, }, main: ({ gl, u, params }) => { - gl.uniform1f(u.phase, params.phase / 10); + gl.uniform1f(u.phase, params.phase); gl.uniform1f(u.frequency, params.frequency); gl.uniform1f(u.strength, params.strength); gl.uniform1i(u.direction, params.direction); From 3dbfd80d65262bec24002c50cdfb2c1b962efcf5 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 09:25:57 +0900 Subject: [PATCH 006/108] enhance(frontend/image-effector): tweak colorAdjust fx --- .../MkImageEffectorDialog.Layer.vue | 11 +++-- .../utility/image-effector/ImageEffector.ts | 2 + .../utility/image-effector/fxs/colorAdjust.ts | 49 ++++++++++--------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue index ff3b9aff9b..d8466fa7ca 100644 --- a/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue +++ b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue @@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only v-if="v.type === 'boolean'" v-model="layer.params[k]" > - + - + - +
@@ -55,7 +56,7 @@ SPDX-License-Identifier: AGPL-3.0-only :max="10000" :step="1" > - +
- + diff --git a/packages/frontend/src/utility/image-effector/ImageEffector.ts b/packages/frontend/src/utility/image-effector/ImageEffector.ts index 85dc5d5266..1028c57f35 100644 --- a/packages/frontend/src/utility/image-effector/ImageEffector.ts +++ b/packages/frontend/src/utility/image-effector/ImageEffector.ts @@ -19,6 +19,8 @@ type ParamTypeToPrimitive = { type ImageEffectorFxParamDefs = Record string; }>; export function defineImageEffectorFx(fx: ImageEffectorFx) { diff --git a/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts index cbb874852d..c38490e198 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts @@ -72,7 +72,7 @@ void main() { vec3 color = in_color.rgb; color = color * u_brightness; - color += vec3(clamp(u_lightness, 0.0, 2.0) - 1.0); + color += vec3(u_lightness); color = (color - 0.5) * u_contrast + 0.5; vec3 hsl = rgb2hsl(color); @@ -92,45 +92,50 @@ export const FX_colorAdjust = defineImageEffectorFx({ params: { lightness: { type: 'number' as const, - default: 100, - min: 0, - max: 200, - step: 1, + default: 0, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, contrast: { type: 'number' as const, - default: 100, + default: 1, min: 0, - max: 200, - step: 1, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, hue: { type: 'number' as const, default: 0, - min: -360, - max: 360, - step: 1, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 180) + '°', }, brightness: { type: 'number' as const, - default: 100, + default: 1, min: 0, - max: 200, - step: 1, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, saturation: { type: 'number' as const, - default: 100, + default: 1, min: 0, - max: 200, - step: 1, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { - gl.uniform1f(u.brightness, params.brightness / 100); - gl.uniform1f(u.contrast, params.contrast / 100); - gl.uniform1f(u.hue, params.hue / 360); - gl.uniform1f(u.lightness, params.lightness / 100); - gl.uniform1f(u.saturation, params.saturation / 100); + gl.uniform1f(u.brightness, params.brightness); + gl.uniform1f(u.contrast, params.contrast); + gl.uniform1f(u.hue, params.hue / 2); + gl.uniform1f(u.lightness, params.lightness); + gl.uniform1f(u.saturation, params.saturation); }, }); From 5bec8ba6b0f8c98ccc395ef5da9f6126234bf63e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 10:19:42 +0900 Subject: [PATCH 007/108] enhance(frontend/image-effector): tweak fxs --- packages/frontend/src/utility/image-effector/fxs/checker.ts | 2 ++ .../frontend/src/utility/image-effector/fxs/colorClamp.ts | 2 ++ .../src/utility/image-effector/fxs/colorClampAdvanced.ts | 6 ++++++ packages/frontend/src/utility/image-effector/fxs/distort.ts | 2 ++ .../frontend/src/utility/image-effector/fxs/polkadot.ts | 3 +++ packages/frontend/src/utility/image-effector/fxs/stripe.ts | 3 +++ 6 files changed, 18 insertions(+) diff --git a/packages/frontend/src/utility/image-effector/fxs/checker.ts b/packages/frontend/src/utility/image-effector/fxs/checker.ts index b799bd0d13..c426308951 100644 --- a/packages/frontend/src/utility/image-effector/fxs/checker.ts +++ b/packages/frontend/src/utility/image-effector/fxs/checker.ts @@ -58,6 +58,7 @@ export const FX_checker = defineImageEffectorFx({ min: -1.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', }, scale: { type: 'number' as const, @@ -76,6 +77,7 @@ export const FX_checker = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts index 5393d73df0..ae0d92b8ae 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts @@ -37,6 +37,7 @@ export const FX_colorClamp = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, min: { type: 'number' as const, @@ -44,6 +45,7 @@ export const FX_colorClamp = defineImageEffectorFx({ min: -1.0, max: 0.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts index c66d75a83f..b9387900fb 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts @@ -41,6 +41,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, rMin: { type: 'number' as const, @@ -48,6 +49,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: -1.0, max: 0.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, gMax: { type: 'number' as const, @@ -55,6 +57,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, gMin: { type: 'number' as const, @@ -62,6 +65,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: -1.0, max: 0.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, bMax: { type: 'number' as const, @@ -69,6 +73,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, bMin: { type: 'number' as const, @@ -76,6 +81,7 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ min: -1.0, max: 0.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { diff --git a/packages/frontend/src/utility/image-effector/fxs/distort.ts b/packages/frontend/src/utility/image-effector/fxs/distort.ts index 67ebc77733..4b1aefc159 100644 --- a/packages/frontend/src/utility/image-effector/fxs/distort.ts +++ b/packages/frontend/src/utility/image-effector/fxs/distort.ts @@ -50,6 +50,7 @@ export const FX_distort = defineImageEffectorFx({ min: -1.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, frequency: { type: 'number' as const, @@ -64,6 +65,7 @@ export const FX_distort = defineImageEffectorFx({ min: 0, max: 1, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { diff --git a/packages/frontend/src/utility/image-effector/fxs/polkadot.ts b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts index 198dd9bad0..14f6f91148 100644 --- a/packages/frontend/src/utility/image-effector/fxs/polkadot.ts +++ b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts @@ -90,6 +90,7 @@ export const FX_polkadot = defineImageEffectorFx({ min: -1.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', }, scale: { type: 'number' as const, @@ -111,6 +112,7 @@ export const FX_polkadot = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, minorDivisions: { type: 'number' as const, @@ -132,6 +134,7 @@ export const FX_polkadot = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, color: { type: 'color' as const, diff --git a/packages/frontend/src/utility/image-effector/fxs/stripe.ts b/packages/frontend/src/utility/image-effector/fxs/stripe.ts index 37766e185d..f6c1d2278d 100644 --- a/packages/frontend/src/utility/image-effector/fxs/stripe.ts +++ b/packages/frontend/src/utility/image-effector/fxs/stripe.ts @@ -60,6 +60,7 @@ export const FX_stripe = defineImageEffectorFx({ min: -1.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', }, frequency: { type: 'number' as const, @@ -74,6 +75,7 @@ export const FX_stripe = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, color: { type: 'color' as const, @@ -85,6 +87,7 @@ export const FX_stripe = defineImageEffectorFx({ min: 0.0, max: 1.0, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, }, main: ({ gl, u, params }) => { From ce90fee5861536989019bda57e4e14c2fe160332 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 10:55:11 +0900 Subject: [PATCH 008/108] enhance(frontend/image-effector): add blockNoise fx --- locales/index.d.ts | 4 + locales/ja-JP.yml | 1 + .../src/utility/image-effector/fxs.ts | 2 + .../utility/image-effector/fxs/blockNoise.ts | 119 ++++++++++++++++++ .../src/utility/image-effector/fxs/glitch.ts | 1 + 5 files changed, 127 insertions(+) create mode 100644 packages/frontend/src/utility/image-effector/fxs/blockNoise.ts diff --git a/locales/index.d.ts b/locales/index.d.ts index 1462e933d0..9bf4f95448 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -12220,6 +12220,10 @@ export interface Locale extends ILocale { * チェッカー */ "checker": string; + /** + * ブロックノイズ + */ + "blockNoise": string; }; }; } diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 171eb62b0f..bc2c5ab51b 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3273,3 +3273,4 @@ _imageEffector: stripe: "ストライプ" polkadot: "ポルカドット" checker: "チェッカー" + blockNoise: "ブロックノイズ" diff --git a/packages/frontend/src/utility/image-effector/fxs.ts b/packages/frontend/src/utility/image-effector/fxs.ts index a5c8e2ff80..003b56efc4 100644 --- a/packages/frontend/src/utility/image-effector/fxs.ts +++ b/packages/frontend/src/utility/image-effector/fxs.ts @@ -18,6 +18,7 @@ import { FX_stripe } from './fxs/stripe.js'; import { FX_threshold } from './fxs/threshold.js'; import { FX_watermarkPlacement } from './fxs/watermarkPlacement.js'; import { FX_zoomLines } from './fxs/zoomLines.js'; +import { FX_blockNoise } from './fxs/blockNoise.js'; import type { ImageEffectorFx } from './ImageEffector.js'; export const FXS = [ @@ -36,4 +37,5 @@ export const FXS = [ FX_stripe, FX_polkadot, FX_checker, + FX_blockNoise, ] as const satisfies ImageEffectorFx[]; diff --git a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts new file mode 100644 index 0000000000..66ebbabc0c --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts @@ -0,0 +1,119 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import seedrandom from 'seedrandom'; +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform int u_amount; +uniform float u_shiftStrengths[128]; +uniform vec2 u_shiftOrigins[128]; +uniform vec2 u_shiftSizes[128]; +uniform float u_channelShift; +out vec4 out_color; + +void main() { + // TODO: ピクセル毎に計算する必要はないのでuniformにする + float aspect_ratio = min(in_resolution.x, in_resolution.y) / max(in_resolution.x, in_resolution.y); + float aspect_ratio_x = in_resolution.x > in_resolution.y ? 1.0 : aspect_ratio; + float aspect_ratio_y = in_resolution.x < in_resolution.y ? 1.0 : aspect_ratio; + + float v = 0.0; + + for (int i = 0; i < u_amount; i++) { + if ( + in_uv.x * aspect_ratio_x > ((u_shiftOrigins[i].x * aspect_ratio_x) - u_shiftSizes[i].x) && + in_uv.x * aspect_ratio_x < ((u_shiftOrigins[i].x * aspect_ratio_x) + u_shiftSizes[i].x) && + in_uv.y * aspect_ratio_y > ((u_shiftOrigins[i].y * aspect_ratio_y) - u_shiftSizes[i].y) && + in_uv.y * aspect_ratio_y < ((u_shiftOrigins[i].y * aspect_ratio_y) + u_shiftSizes[i].y) + ) { + v += u_shiftStrengths[i]; + } + } + + float r = texture(in_texture, vec2(in_uv.x + (v * (1.0 + u_channelShift)), in_uv.y)).r; + float g = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).g; + float b = texture(in_texture, vec2(in_uv.x + (v * (1.0 + (u_channelShift / 2.0))), in_uv.y)).b; + float a = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).a; + out_color = vec4(r, g, b, a); +} +`; + +export const FX_blockNoise = defineImageEffectorFx({ + id: 'blockNoise' as const, + name: i18n.ts._imageEffector._fxs.blockNoise, + shader, + uniforms: ['amount', 'channelShift'] as const, + params: { + amount: { + type: 'number' as const, + default: 50, + min: 1, + max: 100, + step: 1, + }, + strength: { + type: 'number' as const, + default: 0.05, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + width: { + type: 'number' as const, + default: 0.05, + min: 0.01, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + height: { + type: 'number' as const, + default: 0.01, + min: 0.01, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + channelShift: { + type: 'number' as const, + default: 0, + min: 0, + max: 10, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + seed: { + type: 'seed' as const, + default: 100, + }, + }, + main: ({ gl, program, u, params }) => { + gl.uniform1i(u.amount, params.amount); + gl.uniform1f(u.channelShift, params.channelShift); + + const margin = 0; + + const rnd = seedrandom(params.seed.toString()); + + for (let i = 0; i < params.amount; i++) { + const o = gl.getUniformLocation(program, `u_shiftOrigins[${i.toString()}]`); + gl.uniform2f(o, (rnd() * (1 + (margin * 2))) - margin, (rnd() * (1 + (margin * 2))) - margin); + + const s = gl.getUniformLocation(program, `u_shiftStrengths[${i.toString()}]`); + gl.uniform1f(s, (1 - (rnd() * 2)) * params.strength); + + const sizes = gl.getUniformLocation(program, `u_shiftSizes[${i.toString()}]`); + gl.uniform2f(sizes, params.width, params.height); + } + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/glitch.ts b/packages/frontend/src/utility/image-effector/fxs/glitch.ts index e4939a4302..94027e0e31 100644 --- a/packages/frontend/src/utility/image-effector/fxs/glitch.ts +++ b/packages/frontend/src/utility/image-effector/fxs/glitch.ts @@ -70,6 +70,7 @@ export const FX_glitch = defineImageEffectorFx({ min: 0, max: 10, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, seed: { type: 'seed' as const, From e9af9d4451f1ff66c13040b46d8316b52539901b Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 10:57:29 +0900 Subject: [PATCH 009/108] enhance(frontend/image-effector): tweak fxs --- .../src/utility/image-effector/fxs/glitch.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/utility/image-effector/fxs/glitch.ts b/packages/frontend/src/utility/image-effector/fxs/glitch.ts index 94027e0e31..702b476a0b 100644 --- a/packages/frontend/src/utility/image-effector/fxs/glitch.ts +++ b/packages/frontend/src/utility/image-effector/fxs/glitch.ts @@ -52,17 +52,19 @@ export const FX_glitch = defineImageEffectorFx({ }, strength: { type: 'number' as const, - default: 5, - min: -100, - max: 100, + default: 0.05, + min: -1, + max: 1, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, size: { type: 'number' as const, - default: 20, + default: 0.2, min: 0, - max: 100, + max: 1, step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', }, channelShift: { type: 'number' as const, @@ -88,10 +90,10 @@ export const FX_glitch = defineImageEffectorFx({ gl.uniform1f(o, rnd()); const s = gl.getUniformLocation(program, `u_shiftStrengths[${i.toString()}]`); - gl.uniform1f(s, (1 - (rnd() * 2)) * (params.strength / 100)); + gl.uniform1f(s, (1 - (rnd() * 2)) * params.strength); const h = gl.getUniformLocation(program, `u_shiftHeights[${i.toString()}]`); - gl.uniform1f(h, rnd() * (params.size / 100)); + gl.uniform1f(h, rnd() * params.size); } }, }); From fe805fb7f0a05ea201fafb5e7926cded33d53b31 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 11:06:46 +0900 Subject: [PATCH 010/108] enhance(frontend/image-effector): tweak fxs --- locales/index.d.ts | 4 ++++ locales/ja-JP.yml | 1 + .../frontend/src/components/MkImageEffectorDialog.vue | 2 +- packages/frontend/src/utility/image-effector/fxs.ts | 8 +++----- .../frontend/src/utility/image-effector/fxs/blockNoise.ts | 2 +- .../utility/image-effector/fxs/{glitch.ts => tearing.ts} | 6 +++--- 6 files changed, 13 insertions(+), 10 deletions(-) rename packages/frontend/src/utility/image-effector/fxs/{glitch.ts => tearing.ts} (93%) diff --git a/locales/index.d.ts b/locales/index.d.ts index 9bf4f95448..16003570a2 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -12224,6 +12224,10 @@ export interface Locale extends ILocale { * ブロックノイズ */ "blockNoise": string; + /** + * ティアリング + */ + "tearing": string; }; }; } diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index bc2c5ab51b..6ef92e0f2e 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3274,3 +3274,4 @@ _imageEffector: polkadot: "ポルカドット" checker: "チェッカー" blockNoise: "ブロックノイズ" + tearing: "ティアリング" diff --git a/packages/frontend/src/components/MkImageEffectorDialog.vue b/packages/frontend/src/components/MkImageEffectorDialog.vue index 42502ba449..2c6185fd33 100644 --- a/packages/frontend/src/components/MkImageEffectorDialog.vue +++ b/packages/frontend/src/components/MkImageEffectorDialog.vue @@ -96,7 +96,7 @@ watch(layers, async () => { }, { deep: true }); function addEffect(ev: MouseEvent) { - os.popupMenu(FXS.filter(fx => fx.id !== 'watermarkPlacement').map((fx) => ({ + os.popupMenu(FXS.map((fx) => ({ text: fx.name, action: () => { layers.push({ diff --git a/packages/frontend/src/utility/image-effector/fxs.ts b/packages/frontend/src/utility/image-effector/fxs.ts index 003b56efc4..1fa48aea15 100644 --- a/packages/frontend/src/utility/image-effector/fxs.ts +++ b/packages/frontend/src/utility/image-effector/fxs.ts @@ -10,21 +10,17 @@ import { FX_colorClamp } from './fxs/colorClamp.js'; import { FX_colorClampAdvanced } from './fxs/colorClampAdvanced.js'; import { FX_distort } from './fxs/distort.js'; import { FX_polkadot } from './fxs/polkadot.js'; -import { FX_glitch } from './fxs/glitch.js'; +import { FX_tearing } from './fxs/tearing.js'; import { FX_grayscale } from './fxs/grayscale.js'; import { FX_invert } from './fxs/invert.js'; import { FX_mirror } from './fxs/mirror.js'; import { FX_stripe } from './fxs/stripe.js'; import { FX_threshold } from './fxs/threshold.js'; -import { FX_watermarkPlacement } from './fxs/watermarkPlacement.js'; import { FX_zoomLines } from './fxs/zoomLines.js'; import { FX_blockNoise } from './fxs/blockNoise.js'; import type { ImageEffectorFx } from './ImageEffector.js'; export const FXS = [ - FX_watermarkPlacement, - FX_chromaticAberration, - FX_glitch, FX_mirror, FX_invert, FX_grayscale, @@ -37,5 +33,7 @@ export const FXS = [ FX_stripe, FX_polkadot, FX_checker, + FX_chromaticAberration, + FX_tearing, FX_blockNoise, ] as const satisfies ImageEffectorFx[]; diff --git a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts index 66ebbabc0c..bf7eaa8bda 100644 --- a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts +++ b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts @@ -49,7 +49,7 @@ void main() { export const FX_blockNoise = defineImageEffectorFx({ id: 'blockNoise' as const, - name: i18n.ts._imageEffector._fxs.blockNoise, + name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.blockNoise, shader, uniforms: ['amount', 'channelShift'] as const, params: { diff --git a/packages/frontend/src/utility/image-effector/fxs/glitch.ts b/packages/frontend/src/utility/image-effector/fxs/tearing.ts similarity index 93% rename from packages/frontend/src/utility/image-effector/fxs/glitch.ts rename to packages/frontend/src/utility/image-effector/fxs/tearing.ts index 702b476a0b..d5f1e062ec 100644 --- a/packages/frontend/src/utility/image-effector/fxs/glitch.ts +++ b/packages/frontend/src/utility/image-effector/fxs/tearing.ts @@ -37,9 +37,9 @@ void main() { } `; -export const FX_glitch = defineImageEffectorFx({ - id: 'glitch' as const, - name: i18n.ts._imageEffector._fxs.glitch, +export const FX_tearing = defineImageEffectorFx({ + id: 'tearing' as const, + name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.tearing, shader, uniforms: ['amount', 'channelShift'] as const, params: { From b93717be333453842bd6e422ad835dbae90c0812 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 11:08:53 +0900 Subject: [PATCH 011/108] Update CHANGELOG.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: おさむのひと <46447427+samunohito@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf7ac0cfe..451aeed705 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## 2025.6.1 ### Note -- Misskey Webプラグインのnote_view_interruptorは不具合の影響により現在一時的に無効化されています。 +- AiScript Misskey拡張API(Misskey Webプラグイン)の[note_view_interruptor](https://misskey-hub.net/ja/docs/for-developers/plugin/plugin-api-reference/#pluginregister_note_view_interruptorfn)は不具合の影響により現在一時的に無効化されています。 - Misskey Web投稿フォームのプレビュー切り替えは「...」メニュー内に配置されました ### Client From 40e35c051ad2b17db955c732d303798a6d0d8e8f Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 15 Jun 2025 11:10:03 +0900 Subject: [PATCH 012/108] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 451aeed705..65aa271d05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Client - Feat: 画像にウォーターマークを付与できるようになりました +- Feat: 画像の加工ができるようになりました(実験的) - Enhance: ノートのリアクション一覧で、押せるリアクションを優先して表示できるようにするオプションを追加 - Enhance: 全てのチャットメッセージを既読にできるように(設定→その他) - Enhance: ミュートした絵文字をデバイス間で同期できるように From c69a13b59283a7e3531fc39b39e18e7a500f4a95 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 02:33:14 +0000 Subject: [PATCH 013/108] Release: 2025.6.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 d5294fa24e..d27c8ee0d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.1-rc.0", + "version": "2025.6.1", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index cb4010616c..5f5802da4c 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.1-rc.0", + "version": "2025.6.1", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 1782a353d3489dceb86b86773e64a4941856214a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 02:33:19 +0000 Subject: [PATCH 014/108] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65aa271d05..127ea89669 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.6.1 ### Note From 4ea7c76c02fbbd3b5e72c2c82d4a1f7830abffd9 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 16 Jun 2025 13:55:27 +0900 Subject: [PATCH 015/108] =?UTF-8?q?fix(frontend):=20=E3=82=AD=E3=83=A3?= =?UTF-8?q?=E3=83=83=E3=82=B7=E3=83=A5=E3=82=92=E5=89=8A=E9=99=A4=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=A8=E3=82=AF=E3=83=A9=E3=82=A4=E3=82=A2?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=8C=E4=BD=BF=E7=94=A8=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/frontend-shared/js/i18n.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 127ea89669..029d55817d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: キャッシュを削除しないとクライアントが使用できないことがある問題を修正 ### Server - diff --git a/packages/frontend-shared/js/i18n.ts b/packages/frontend-shared/js/i18n.ts index 480cfcd642..db06ad7f42 100644 --- a/packages/frontend-shared/js/i18n.ts +++ b/packages/frontend-shared/js/i18n.ts @@ -39,7 +39,11 @@ export class I18n { private devMode: boolean; constructor(public locale: T, devMode = false) { - this.devMode = devMode; + // 場合によってはバージョンアップ前の翻訳データを参照した結果存在しないプロパティにアクセスしてクライアントが起動できなくなることがある問題の応急処置として非devモードでもプロキシする + // TODO: https://github.com/misskey-dev/misskey/issues/14453 が実装されたらそのようなことは発生し得なくなるため消す + const oukyuusyoti = true; + + this.devMode = devMode || oukyuusyoti; //#region BIND this.t = this.t.bind(this); From a1cf2d3074c10f8e37c68ce1dbe86fdc7de11e48 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 16 Jun 2025 14:07:48 +0900 Subject: [PATCH 016/108] New Crowdin updates (#16192) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Chinese Simplified) --- locales/ca-ES.yml | 2 ++ locales/en-US.yml | 4 ++++ locales/es-ES.yml | 2 ++ locales/ko-KR.yml | 4 +++- locales/zh-CN.yml | 2 ++ locales/zh-TW.yml | 2 ++ 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 41e3a0684f..33abcf3488 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -3169,3 +3169,5 @@ _imageEffector: stripe: "Bandes" polkadot: "Lunars" checker: "Escacs" + blockNoise: "Bloqueig de soroll" + tearing: "Trencament d'imatge " diff --git a/locales/en-US.yml b/locales/en-US.yml index bedc781274..8d877af899 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -2465,6 +2465,8 @@ _visibility: disableFederation: "Defederate" disableFederationDescription: "Don't transmit to other instances" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "There are files that have not been uploaded, do you want to discard them and close the form?" + uploaderTip: "The file has not yet been uploaded. From the file menu, you can rename, crop images, watermark and compress or uncompress the file. Files are automatically uploaded when you publish a note." replyPlaceholder: "Reply to this note..." quotePlaceholder: "Quote this note..." channelPlaceholder: "Post to a channel..." @@ -3167,3 +3169,5 @@ _imageEffector: stripe: "Stripes" polkadot: "Polkadot" checker: "Checker" + blockNoise: "Block Noise" + tearing: "Tearing" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 9b32b52ac9..4b3eef3a0d 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -3169,3 +3169,5 @@ _imageEffector: stripe: "Rayas" polkadot: "Lunares" checker: "Corrector" + blockNoise: "Bloquear Ruido" + tearing: "Rasgado de Imagen (Tearing)" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 7d3ec1296c..c5be794433 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -3107,7 +3107,7 @@ _uploader: savedXPercent: "{x}% 절약" abortConfirm: "업로드되지 않은 파일이 있습니다만, 그만 두시겠습니까?" doneConfirm: "업로드되지 않은 파일이 있습니다만, 완료하시겠습니까?" - maxFileSizeIsX: "업오드 가능한 최대 파일 크기는 {x}입니다." + maxFileSizeIsX: "업로드 가능한 최대 파일 크기는 {x}입니다." allowedTypes: "업로드 가능한 파일 유형" tip: "파일은 아직 업로드되지 않았습니다. 이 다이얼로그에서 업로드 전의 확인, 이름 바꾸기, 압축, 자르기 등을 하실 수 있습니다. 준비가 되셨다면 '업로드' 버튼을 클릭해 업로드를 시작하실 수 있습니다." _clientPerformanceIssueTip: @@ -3169,3 +3169,5 @@ _imageEffector: stripe: "줄무늬" polkadot: "물방울 무늬" checker: "체크 무늬" + blockNoise: "노이즈 방지" + tearing: "티어링" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index fe16a01f3b..6936d16799 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -3169,3 +3169,5 @@ _imageEffector: stripe: "条纹" polkadot: "波点" checker: "检查" + blockNoise: "块状噪点" + tearing: "撕裂" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 4d276a2e98..8aa5f92871 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -3169,3 +3169,5 @@ _imageEffector: stripe: "條紋" polkadot: "波卡圓點" checker: "棋盤格" + blockNoise: "阻擋雜訊" + tearing: "撕裂" From 213c5692424e68b7d156be2d8c218a734f016a8b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 05:08:24 +0000 Subject: [PATCH 017/108] Bump version to 2025.6.2-alpha.0 --- CHANGELOG.md | 2 +- package.json | 2 +- packages/misskey-js/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 029d55817d..d73c6ebb2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 2025.6.2 ### General - diff --git a/package.json b/package.json index d27c8ee0d6..f3d372f42b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.1", + "version": "2025.6.2-alpha.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 5f5802da4c..6895ac2fe0 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.1", + "version": "2025.6.2-alpha.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 824643a44e9865aaf10a2e66339168edabddde1d Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 16 Jun 2025 17:57:09 +0900 Subject: [PATCH 018/108] [skip ci] Update CHANGELOG.md --- CHANGELOG.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d73c6ebb2b..a0466bff4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,8 @@ ## 2025.6.2 -### General -- - ### Client - Fix: キャッシュを削除しないとクライアントが使用できないことがある問題を修正 - -### Server -- - +- 翻訳の更新 ## 2025.6.1 From 978ae706ebd57d1753d38bc34cb83873617b1e0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 08:58:31 +0000 Subject: [PATCH 019/108] Release: 2025.6.2 --- 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 f3d372f42b..d417630114 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.2-alpha.0", + "version": "2025.6.2", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 6895ac2fe0..b5fc6ff6fa 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.2-alpha.0", + "version": "2025.6.2", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From a279bd4d492c88a6698893b853d72be3b6f3e4a9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 08:58:37 +0000 Subject: [PATCH 020/108] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0466bff4a..a8976e0e91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.6.2 ### Client From 062d5170dfcc11f2175664cfbacb5e3ebf510238 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:51:26 +0900 Subject: [PATCH 021/108] =?UTF-8?q?fix(frontend):=20=E3=82=AD=E3=83=A3?= =?UTF-8?q?=E3=83=83=E3=82=B7=E3=83=A5=E3=82=92=E5=89=8A=E9=99=A4=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=A8=E3=82=AF=E3=83=A9=E3=82=A4=E3=82=A2?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=8C=E4=BD=BF=E7=94=A8=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=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 #16196 --- CHANGELOG.md | 9 +-------- packages/frontend-shared/js/i18n.ts | 4 ++-- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8976e0e91..6e34067658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,7 @@ ## Unreleased -### General -- - ### Client -- - -### Server -- - +- Fix: キャッシュを削除しないとクライアントが使用できないことがある問題を修正 ## 2025.6.2 diff --git a/packages/frontend-shared/js/i18n.ts b/packages/frontend-shared/js/i18n.ts index db06ad7f42..25581b969a 100644 --- a/packages/frontend-shared/js/i18n.ts +++ b/packages/frontend-shared/js/i18n.ts @@ -72,7 +72,7 @@ export class I18n { console.error(`Unexpected locale key: ${String(p)}`); - return p; + return new Proxy({} as any, new Handler()); } } @@ -141,7 +141,7 @@ export class I18n { console.error(`Unexpected locale key: ${String(p)}`); - return p; + return new Proxy((() => p) as any, new Handler()); } } From 4093616e230cb3be3d4e9f8437049bafd6bcbc4b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 10:52:09 +0000 Subject: [PATCH 022/108] Bump version to 2025.6.3-alpha.0 --- CHANGELOG.md | 2 +- package.json | 2 +- packages/misskey-js/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e34067658..a8e335b5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 2025.6.3 ### Client - Fix: キャッシュを削除しないとクライアントが使用できないことがある問題を修正 diff --git a/package.json b/package.json index d417630114..4621517e83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.2", + "version": "2025.6.3-alpha.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index b5fc6ff6fa..2518d91134 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.2", + "version": "2025.6.3-alpha.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 2baec208f5353c29315944c8bbf9a0d144348ecc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 11:13:22 +0000 Subject: [PATCH 023/108] Release: 2025.6.3 --- 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 4621517e83..11f236fec0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.6.3-alpha.0", + "version": "2025.6.3", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 2518d91134..2a617b1489 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.3-alpha.0", + "version": "2025.6.3", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From a812dfe8535827b333b64e2ce44c85a1b7b6b39b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 11:13:27 +0000 Subject: [PATCH 024/108] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8e335b5f0..cf4bc493e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.6.3 ### Client From 0ada970337faad764a67e1f81dbbe169d916032e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:12:25 +0900 Subject: [PATCH 025/108] =?UTF-8?q?enhance(frontend):=20=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E8=87=AA=E5=8B=95=E3=83=90=E3=83=83=E3=82=AF=E3=82=A2?= =?UTF-8?q?=E3=83=83=E3=83=97=E3=82=92=E3=82=AA=E3=83=B3=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F=E7=9B=B4=E5=BE=8C=E3=81=AB=E8=87=AA=E5=8B=95=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/frontend/src/preferences/utility.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf4bc493e3..62d95bce3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Enhance: 設定の自動バックアップをオンにした直後に自動バックアップするように ### Server - diff --git a/packages/frontend/src/preferences/utility.ts b/packages/frontend/src/preferences/utility.ts index a6687251af..80949f4971 100644 --- a/packages/frontend/src/preferences/utility.ts +++ b/packages/frontend/src/preferences/utility.ts @@ -35,6 +35,8 @@ export function getPreferencesProfileMenu(): MenuItem[] { } store.set('enablePreferencesAutoCloudBackup', true); + + cloudBackup(); } else { store.set('enablePreferencesAutoCloudBackup', false); } From d518682e7359e9f0e73e536ed44e0e5103d124ad Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:44:16 +0900 Subject: [PATCH 026/108] add note --- packages/frontend/src/preferences/manager.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts index dad6f8b912..079a98c61b 100644 --- a/packages/frontend/src/preferences/manager.ts +++ b/packages/frontend/src/preferences/manager.ts @@ -162,6 +162,7 @@ export class PreferencesManager { this.r[key].value = this.s[key] = v; } + // TODO: desync対策 cloudの値のfetchが正常に完了していない状態でcommitすると多分値が上書きされる public commit(key: K, value: ValueOf) { const v = JSON.parse(JSON.stringify(value)); // deep copy 兼 vueのプロキシ解除 From 36989e0cd3dbf519eee1ad592858492f0a3191c8 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 24 Jun 2025 20:24:34 +0900 Subject: [PATCH 027/108] Update about-misskey.vue --- packages/frontend/src/pages/about-misskey.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue index 9812f24982..d110c265f4 100644 --- a/packages/frontend/src/pages/about-misskey.vue +++ b/packages/frontend/src/pages/about-misskey.vue @@ -280,6 +280,9 @@ const patronsWithIcon = [{ }, { name: '新井 治', icon: 'https://assets.misskey-hub.net/patrons/d160876f20394674a17963a0e609600a.jpg', +}, { + name: 'しきいし', + icon: 'https://assets.misskey-hub.net/patrons/77dd5387db41427ba9cbdc8849e76402.jpg', }]; const patrons = [ From 684424f26a23b108d0bdc45ae04626414d032234 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 24 Jun 2025 20:30:32 +0900 Subject: [PATCH 028/108] enhance(frontend): improve useScrollPositionKeeper --- .../frontend/src/composables/use-scroll-position-keeper.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/frontend/src/composables/use-scroll-position-keeper.ts b/packages/frontend/src/composables/use-scroll-position-keeper.ts index b584171cbe..cc86d93a02 100644 --- a/packages/frontend/src/composables/use-scroll-position-keeper.ts +++ b/packages/frontend/src/composables/use-scroll-position-keeper.ts @@ -22,6 +22,12 @@ export function useScrollPositionKeeper(scrollContainerRef: Ref Date: Wed, 25 Jun 2025 10:08:44 +0900 Subject: [PATCH 029/108] =?UTF-8?q?enhance(frontend):=20=E5=85=A8=E3=81=A6?= =?UTF-8?q?=E3=81=AE=E3=83=9A=E3=83=BC=E3=82=B8=E3=83=8D=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=AB=E3=81=8A=E3=81=84=E3=81=A6=E3=82=B3?= =?UTF-8?q?=E3=83=B3=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=83=A1=E3=83=8B?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=81=8B=E3=82=89=E3=83=AA=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=81=A7=E3=81=8D=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 --- .../frontend/src/components/MkPagination.vue | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkPagination.vue b/packages/frontend/src/components/MkPagination.vue index 681abd2eff..aded18f220 100644 --- a/packages/frontend/src/components/MkPagination.vue +++ b/packages/frontend/src/components/MkPagination.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only -->