From 785b85ee462ac6f3af416be1d3ed68f3e478118b 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, 9 Aug 2025 14:11:19 +0900 Subject: [PATCH 01/10] =?UTF-8?q?enhance(frontend):=20=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E3=82=A8=E3=83=95=E3=82=A7=E3=82=AF=E3=83=88=E3=81=AEUI?= =?UTF-8?q?=E6=94=B9=E5=96=84=20(#16191)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhance(frontend): 画像エフェクトの改善 * enhance: i18n colorClampAdvanced * fix: missing translation * enhance: i18n blockNoise * fix lint * fix: narrow down fx defs types * fix * fix: watermark用エフェクトは別で定義し直す * fix lint * ImageEffectorをwatermarkに隠蔽 * watermark関連の定義を完全に分離 * refactor * fix * ぼかし効果 -> スムージング * refactor: remove unnecessary `as const` * Update Changelog --- CHANGELOG.md | 1 + locales/index.d.ts | 138 +++++++++++++++++- locales/ja-JP.yml | 36 ++++- .../MkImageEffectorDialog.Layer.vue | 86 +---------- .../src/components/MkImageEffectorFxForm.vue | 95 ++++++++++++ .../src/components/MkPositionSelector.vue | 5 + .../utility/image-effector/ImageEffector.ts | 84 +++++++++-- .../utility/image-effector/fxs/blockNoise.ts | 20 ++- .../src/utility/image-effector/fxs/checker.ts | 14 +- .../image-effector/fxs/chromaticAberration.ts | 8 +- .../utility/image-effector/fxs/colorAdjust.ts | 17 ++- .../utility/image-effector/fxs/colorClamp.ts | 8 +- .../image-effector/fxs/colorClampAdvanced.ts | 20 ++- .../src/utility/image-effector/fxs/distort.ts | 19 ++- .../utility/image-effector/fxs/grayscale.ts | 2 +- .../src/utility/image-effector/fxs/invert.ts | 11 +- .../src/utility/image-effector/fxs/mirror.ts | 20 ++- .../utility/image-effector/fxs/polkadot.ts | 27 ++-- .../src/utility/image-effector/fxs/stripe.ts | 18 ++- .../src/utility/image-effector/fxs/tearing.ts | 17 ++- .../utility/image-effector/fxs/threshold.ts | 11 +- .../image-effector/fxs/watermarkPlacement.ts | 16 +- .../utility/image-effector/fxs/zoomLines.ts | 31 ++-- packages/frontend/src/utility/watermark.ts | 1 - 24 files changed, 509 insertions(+), 196 deletions(-) create mode 100644 packages/frontend/src/components/MkImageEffectorFxForm.vue diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ec6f2a85..94043c4c24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ - Enhance: コントロールパネルを検索できるように - Enhance: トルコ語 (tr-TR) に対応 - Enhance: 言語別のスクリプトバンドルを生成するように +- Enhance: 画像エフェクトのパラメータ名の多言語対応 - Fix: 投稿フォームでファイルのアップロードが中止または失敗した際のハンドリングを修正 - Fix: 一部の設定検索結果が存在しないパスになる問題を修正 (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1171) diff --git a/locales/index.d.ts b/locales/index.d.ts index b0a15e0ad1..b2906cf48e 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -12203,6 +12203,10 @@ export interface Locale extends ILocale { * 高度 */ "advanced": string; + /** + * 角度 + */ + "angle": string; /** * ストライプ */ @@ -12215,10 +12219,6 @@ export interface Locale extends ILocale { * ラインの数 */ "stripeFrequency": string; - /** - * 角度 - */ - "angle": string; /** * ポルカドット */ @@ -12261,6 +12261,10 @@ export interface Locale extends ILocale { * 変更を破棄して終了しますか? */ "discardChangesConfirm": string; + /** + * 設定項目はありません + */ + "nothingToConfigure": string; "_fxs": { /** * 色収差 @@ -12327,6 +12331,132 @@ export interface Locale extends ILocale { */ "tearing": string; }; + "_fxProps": { + /** + * 角度 + */ + "angle": string; + /** + * サイズ + */ + "scale": string; + /** + * サイズ + */ + "size": string; + /** + * 色 + */ + "color": string; + /** + * 不透明度 + */ + "opacity": string; + /** + * 正規化 + */ + "normalize": string; + /** + * 量 + */ + "amount": string; + /** + * 明るさ + */ + "lightness": string; + /** + * コントラスト + */ + "contrast": string; + /** + * 色相 + */ + "hue": string; + /** + * 輝度 + */ + "brightness": string; + /** + * 彩度 + */ + "saturation": string; + /** + * 最大値 + */ + "max": string; + /** + * 最小値 + */ + "min": string; + /** + * 方向 + */ + "direction": string; + /** + * 位相 + */ + "phase": string; + /** + * 頻度 + */ + "frequency": string; + /** + * 強さ + */ + "strength": string; + /** + * ズレ + */ + "glitchChannelShift": string; + /** + * シード値 + */ + "seed": string; + /** + * 赤色成分 + */ + "redComponent": string; + /** + * 緑色成分 + */ + "greenComponent": string; + /** + * 青色成分 + */ + "blueComponent": string; + /** + * しきい値 + */ + "threshold": string; + /** + * 中心X + */ + "centerX": string; + /** + * 中心Y + */ + "centerY": string; + /** + * スムージング + */ + "zoomLinesSmoothing": string; + /** + * スムージングと集中線の幅の設定は併用できません。 + */ + "zoomLinesSmoothingDescription": string; + /** + * 集中線の幅 + */ + "zoomLinesThreshold": string; + /** + * 中心径 + */ + "zoomLinesMaskSize": string; + /** + * 黒色にする + */ + "zoomLinesBlack": string; + }; }; /** * 下書き diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 4562cfe370..d45aa7bb86 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3267,10 +3267,10 @@ _watermarkEditor: type: "タイプ" image: "画像" advanced: "高度" + angle: "角度" stripe: "ストライプ" stripeWidth: "ラインの幅" stripeFrequency: "ラインの数" - angle: "角度" polkadot: "ポルカドット" checker: "チェッカー" polkadotMainDotOpacity: "メインドットの不透明度" @@ -3283,6 +3283,7 @@ _imageEffector: title: "エフェクト" addEffect: "エフェクトを追加" discardChangesConfirm: "変更を破棄して終了しますか?" + nothingToConfigure: "設定項目はありません" _fxs: chromaticAberration: "色収差" @@ -3302,6 +3303,39 @@ _imageEffector: blockNoise: "ブロックノイズ" tearing: "ティアリング" + _fxProps: + angle: "角度" + scale: "サイズ" + size: "サイズ" + color: "色" + opacity: "不透明度" + normalize: "正規化" + amount: "量" + lightness: "明るさ" + contrast: "コントラスト" + hue: "色相" + brightness: "輝度" + saturation: "彩度" + max: "最大値" + min: "最小値" + direction: "方向" + phase: "位相" + frequency: "頻度" + strength: "強さ" + glitchChannelShift: "ズレ" + seed: "シード値" + redComponent: "赤色成分" + greenComponent: "緑色成分" + blueComponent: "青色成分" + threshold: "しきい値" + centerX: "中心X" + centerY: "中心Y" + zoomLinesSmoothing: "スムージング" + zoomLinesSmoothingDescription: "スムージングと集中線の幅の設定は併用できません。" + zoomLinesThreshold: "集中線の幅" + zoomLinesMaskSize: "中心径" + zoomLinesBlack: "黒色にする" + drafts: "下書き" _drafts: select: "下書きを選択" diff --git a/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue index d8466fa7ca..f734325039 100644 --- a/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue +++ b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue @@ -14,73 +14,15 @@ SPDX-License-Identifier: AGPL-3.0-only -
-
- - - - - - - - - - -
- - - -
- - - -
-
+ - - diff --git a/packages/frontend/src/components/MkImageEffectorFxForm.vue b/packages/frontend/src/components/MkImageEffectorFxForm.vue new file mode 100644 index 0000000000..d7ab620132 --- /dev/null +++ b/packages/frontend/src/components/MkImageEffectorFxForm.vue @@ -0,0 +1,95 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkPositionSelector.vue b/packages/frontend/src/components/MkPositionSelector.vue index 002950cdf1..739f55125b 100644 --- a/packages/frontend/src/components/MkPositionSelector.vue +++ b/packages/frontend/src/components/MkPositionSelector.vue @@ -44,6 +44,11 @@ const y = defineModel('y', { default: 'center' }); height: 32px; background: var(--MI_THEME-panel); border-radius: 4px; + transition: background 0.1s ease; + + &:not(.active):hover { + background: var(--MI_THEME-buttonHoverBg); + } &.active { background: var(--MI_THEME-accentedBg); diff --git a/packages/frontend/src/utility/image-effector/ImageEffector.ts b/packages/frontend/src/utility/image-effector/ImageEffector.ts index 1028c57f35..66b4d1026c 100644 --- a/packages/frontend/src/utility/image-effector/ImageEffector.ts +++ b/packages/frontend/src/utility/image-effector/ImageEffector.ts @@ -6,22 +6,78 @@ import { getProxiedImageUrl } from '../media-proxy.js'; import { initShaderProgram } from '../webgl.js'; +export type ImageEffectorRGB = [r: number, g: number, b: number]; + type ParamTypeToPrimitive = { - 'number': number; - 'number:enum': number; - 'boolean': boolean; - 'align': { x: 'left' | 'center' | 'right'; y: 'top' | 'center' | 'bottom'; }; - 'seed': number; - 'texture': { type: 'text'; text: string | null; } | { type: 'url'; url: string | null; } | null; - 'color': [r: number, g: number, b: number]; + [K in ImageEffectorFxParamDef['type']]: (ImageEffectorFxParamDef & { type: K })['default']; }; -type ImageEffectorFxParamDefs = Record string; -}>; + caption?: string; + default: any; +} + +interface NumberParamDef extends CommonParamDef { + type: 'number'; + default: number; + min: number; + max: number; + step?: number; + toViewValue?: (v: number) => string; +}; + +interface NumberEnumParamDef extends CommonParamDef { + type: 'number:enum'; + enum: { + value: number; + label?: string; + icon?: string; + }[]; + default: number; +}; + +interface BooleanParamDef extends CommonParamDef { + type: 'boolean'; + default: boolean; +}; + +interface AlignParamDef extends CommonParamDef { + type: 'align'; + default: { + x: 'left' | 'center' | 'right'; + y: 'top' | 'center' | 'bottom'; + }; +}; + +interface SeedParamDef extends CommonParamDef { + type: 'seed'; + default: number; +}; + +interface TextureParamDef extends CommonParamDef { + type: 'texture'; + default: { type: 'text'; text: string | null; } | { type: 'url'; url: string | null; } | null; +}; + +interface ColorParamDef extends CommonParamDef { + type: 'color'; + default: ImageEffectorRGB; +}; + +type ImageEffectorFxParamDef = NumberParamDef | NumberEnumParamDef | BooleanParamDef | AlignParamDef | SeedParamDef | TextureParamDef | ColorParamDef; + +export type ImageEffectorFxParamDefs = Record; + +export type GetParamType = + T extends NumberEnumParamDef + ? T['enum'][number]['value'] + : ParamTypeToPrimitive[T['type']]; + +export type ParamsRecordTypeToDefRecord = { + [K in keyof PS]: GetParamType; +}; export function defineImageEffectorFx(fx: ImageEffectorFx) { return fx; @@ -36,9 +92,7 @@ export type ImageEffectorFx; u: Record; width: number; height: number; diff --git a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts index bf7eaa8bda..7e09524c10 100644 --- a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts +++ b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts @@ -48,20 +48,22 @@ void main() { `; export const FX_blockNoise = defineImageEffectorFx({ - id: 'blockNoise' as const, + id: 'blockNoise', name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.blockNoise, shader, uniforms: ['amount', 'channelShift'] as const, params: { amount: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.amount, + type: 'number', default: 50, min: 1, max: 100, step: 1, }, strength: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.strength, + type: 'number', default: 0.05, min: -1, max: 1, @@ -69,7 +71,8 @@ export const FX_blockNoise = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, width: { - type: 'number' as const, + label: i18n.ts.width, + type: 'number', default: 0.05, min: 0.01, max: 1, @@ -77,7 +80,8 @@ export const FX_blockNoise = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, height: { - type: 'number' as const, + label: i18n.ts.height, + type: 'number', default: 0.01, min: 0.01, max: 1, @@ -85,7 +89,8 @@ export const FX_blockNoise = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, channelShift: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.glitchChannelShift, + type: 'number', default: 0, min: 0, max: 10, @@ -93,7 +98,8 @@ export const FX_blockNoise = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, seed: { - type: 'seed' as const, + label: i18n.ts._imageEffector._fxProps.seed, + type: 'seed', default: 100, }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/checker.ts b/packages/frontend/src/utility/image-effector/fxs/checker.ts index c426308951..c48f73acbd 100644 --- a/packages/frontend/src/utility/image-effector/fxs/checker.ts +++ b/packages/frontend/src/utility/image-effector/fxs/checker.ts @@ -47,13 +47,14 @@ void main() { `; export const FX_checker = defineImageEffectorFx({ - id: 'checker' as const, + id: 'checker', name: i18n.ts._imageEffector._fxs.checker, shader, uniforms: ['angle', 'scale', 'color', 'opacity'] as const, params: { angle: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.angle, + type: 'number', default: 0, min: -1.0, max: 1.0, @@ -61,18 +62,21 @@ export const FX_checker = defineImageEffectorFx({ toViewValue: v => Math.round(v * 90) + '°', }, scale: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.scale, + type: 'number', default: 3.0, min: 1.0, max: 10.0, step: 0.1, }, color: { - type: 'color' as const, + label: i18n.ts._imageEffector._fxProps.color, + type: 'color', default: [1, 1, 1], }, opacity: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.opacity, + type: 'number', default: 0.5, min: 0.0, max: 1.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts b/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts index 82d7d883aa..4adb7ce91e 100644 --- a/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts +++ b/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts @@ -52,17 +52,19 @@ void main() { `; export const FX_chromaticAberration = defineImageEffectorFx({ - id: 'chromaticAberration' as const, + id: 'chromaticAberration', name: i18n.ts._imageEffector._fxs.chromaticAberration, shader, uniforms: ['amount', 'start', 'normalize'] as const, params: { normalize: { - type: 'boolean' as const, + label: i18n.ts._imageEffector._fxProps.normalize, + type: 'boolean', default: false, }, amount: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.amount, + type: 'number', default: 0.1, min: 0.0, max: 1.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts index c38490e198..8cfbbcb516 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts @@ -85,13 +85,14 @@ void main() { `; export const FX_colorAdjust = defineImageEffectorFx({ - id: 'colorAdjust' as const, + id: 'colorAdjust', name: i18n.ts._imageEffector._fxs.colorAdjust, shader, uniforms: ['lightness', 'contrast', 'hue', 'brightness', 'saturation'] as const, params: { lightness: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.lightness, + type: 'number', default: 0, min: -1, max: 1, @@ -99,7 +100,8 @@ export const FX_colorAdjust = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, contrast: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.contrast, + type: 'number', default: 1, min: 0, max: 4, @@ -107,7 +109,8 @@ export const FX_colorAdjust = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, hue: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.hue, + type: 'number', default: 0, min: -1, max: 1, @@ -115,7 +118,8 @@ export const FX_colorAdjust = defineImageEffectorFx({ toViewValue: v => Math.round(v * 180) + '°', }, brightness: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.brightness, + type: 'number', default: 1, min: 0, max: 4, @@ -123,7 +127,8 @@ export const FX_colorAdjust = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, saturation: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.saturation, + type: 'number', default: 1, min: 0, max: 4, diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts index ae0d92b8ae..4f18eb63c4 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts @@ -26,13 +26,14 @@ void main() { `; export const FX_colorClamp = defineImageEffectorFx({ - id: 'colorClamp' as const, + id: 'colorClamp', name: i18n.ts._imageEffector._fxs.colorClamp, shader, uniforms: ['max', 'min'] as const, params: { max: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.max, + type: 'number', default: 1.0, min: 0.0, max: 1.0, @@ -40,7 +41,8 @@ export const FX_colorClamp = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, min: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.min, + type: 'number', default: -1.0, min: -1.0, max: 0.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts index b9387900fb..7e793061cf 100644 --- a/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts +++ b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts @@ -30,13 +30,14 @@ void main() { `; export const FX_colorClampAdvanced = defineImageEffectorFx({ - id: 'colorClampAdvanced' as const, + id: 'colorClampAdvanced', name: i18n.ts._imageEffector._fxs.colorClampAdvanced, shader, uniforms: ['rMax', 'rMin', 'gMax', 'gMin', 'bMax', 'bMin'] as const, params: { rMax: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.max} (${i18n.ts._imageEffector._fxProps.redComponent})`, + type: 'number', default: 1.0, min: 0.0, max: 1.0, @@ -44,7 +45,8 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, rMin: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.min} (${i18n.ts._imageEffector._fxProps.redComponent})`, + type: 'number', default: -1.0, min: -1.0, max: 0.0, @@ -52,7 +54,8 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, gMax: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.max} (${i18n.ts._imageEffector._fxProps.greenComponent})`, + type: 'number', default: 1.0, min: 0.0, max: 1.0, @@ -60,7 +63,8 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, gMin: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.min} (${i18n.ts._imageEffector._fxProps.greenComponent})`, + type: 'number', default: -1.0, min: -1.0, max: 0.0, @@ -68,7 +72,8 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, bMax: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.max} (${i18n.ts._imageEffector._fxProps.blueComponent})`, + type: 'number', default: 1.0, min: 0.0, max: 1.0, @@ -76,7 +81,8 @@ export const FX_colorClampAdvanced = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, bMin: { - type: 'number' as const, + label: `${i18n.ts._imageEffector._fxProps.min} (${i18n.ts._imageEffector._fxProps.blueComponent})`, + type: 'number', default: -1.0, min: -1.0, max: 0.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/distort.ts b/packages/frontend/src/utility/image-effector/fxs/distort.ts index 4b1aefc159..7b5ec45f4b 100644 --- a/packages/frontend/src/utility/image-effector/fxs/distort.ts +++ b/packages/frontend/src/utility/image-effector/fxs/distort.ts @@ -34,18 +34,23 @@ void main() { `; export const FX_distort = defineImageEffectorFx({ - id: 'distort' as const, + id: 'distort', name: i18n.ts._imageEffector._fxs.distort, shader, uniforms: ['phase', 'frequency', 'strength', 'direction'] as const, params: { direction: { - type: 'number:enum' as const, - enum: [{ value: 0, label: 'v' }, { value: 1, label: 'h' }], + label: i18n.ts._imageEffector._fxProps.direction, + type: 'number:enum', + enum: [ + { value: 0 as const, label: i18n.ts.horizontal }, + { value: 1 as const, label: i18n.ts.vertical }, + ], default: 1, }, phase: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.phase, + type: 'number', default: 0.0, min: -1.0, max: 1.0, @@ -53,14 +58,16 @@ export const FX_distort = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, frequency: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.frequency, + type: 'number', default: 30, min: 0, max: 100, step: 0.1, }, strength: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.strength, + type: 'number', default: 0.05, min: 0, max: 1, diff --git a/packages/frontend/src/utility/image-effector/fxs/grayscale.ts b/packages/frontend/src/utility/image-effector/fxs/grayscale.ts index 8f33706ae7..e1a288fc85 100644 --- a/packages/frontend/src/utility/image-effector/fxs/grayscale.ts +++ b/packages/frontend/src/utility/image-effector/fxs/grayscale.ts @@ -26,7 +26,7 @@ void main() { `; export const FX_grayscale = defineImageEffectorFx({ - id: 'grayscale' as const, + id: 'grayscale', name: i18n.ts._imageEffector._fxs.grayscale, shader, uniforms: [] as const, diff --git a/packages/frontend/src/utility/image-effector/fxs/invert.ts b/packages/frontend/src/utility/image-effector/fxs/invert.ts index 220a2dea30..1c662ae849 100644 --- a/packages/frontend/src/utility/image-effector/fxs/invert.ts +++ b/packages/frontend/src/utility/image-effector/fxs/invert.ts @@ -27,21 +27,24 @@ void main() { `; export const FX_invert = defineImageEffectorFx({ - id: 'invert' as const, + id: 'invert', name: i18n.ts._imageEffector._fxs.invert, shader, uniforms: ['r', 'g', 'b'] as const, params: { r: { - type: 'boolean' as const, + label: i18n.ts._imageEffector._fxProps.redComponent, + type: 'boolean', default: true, }, g: { - type: 'boolean' as const, + label: i18n.ts._imageEffector._fxProps.greenComponent, + type: 'boolean', default: true, }, b: { - type: 'boolean' as const, + label: i18n.ts._imageEffector._fxProps.blueComponent, + type: 'boolean', default: true, }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/mirror.ts b/packages/frontend/src/utility/image-effector/fxs/mirror.ts index 5946a2e0dc..3d7893f8b0 100644 --- a/packages/frontend/src/utility/image-effector/fxs/mirror.ts +++ b/packages/frontend/src/utility/image-effector/fxs/mirror.ts @@ -35,19 +35,29 @@ void main() { `; export const FX_mirror = defineImageEffectorFx({ - id: 'mirror' as const, + id: 'mirror', name: i18n.ts._imageEffector._fxs.mirror, shader, uniforms: ['h', 'v'] as const, params: { h: { - type: 'number:enum' as const, - enum: [{ value: -1, label: '<-' }, { value: 0, label: '|' }, { value: 1, label: '->' }], + label: i18n.ts.horizontal, + type: 'number:enum', + enum: [ + { value: -1 as const, icon: 'ti ti-arrow-bar-right' }, + { value: 0 as const, icon: 'ti ti-minus-vertical' }, + { value: 1 as const, icon: 'ti ti-arrow-bar-left' } + ], default: -1, }, v: { - type: 'number:enum' as const, - enum: [{ value: -1, label: '^' }, { value: 0, label: '-' }, { value: 1, label: 'v' }], + label: i18n.ts.vertical, + type: 'number:enum', + enum: [ + { value: -1 as const, icon: 'ti ti-arrow-bar-down' }, + { value: 0 as const, icon: 'ti ti-minus' }, + { value: 1 as const, icon: 'ti ti-arrow-bar-up' } + ], default: 0, }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/polkadot.ts b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts index 14f6f91148..1685601bd2 100644 --- a/packages/frontend/src/utility/image-effector/fxs/polkadot.ts +++ b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts @@ -78,14 +78,16 @@ void main() { } `; +// Primarily used for watermark export const FX_polkadot = defineImageEffectorFx({ - id: 'polkadot' as const, + id: 'polkadot', name: i18n.ts._imageEffector._fxs.polkadot, shader, uniforms: ['angle', 'scale', 'major_radius', 'major_opacity', 'minor_divisions', 'minor_radius', 'minor_opacity', 'color'] as const, params: { angle: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.angle, + type: 'number', default: 0, min: -1.0, max: 1.0, @@ -93,21 +95,24 @@ export const FX_polkadot = defineImageEffectorFx({ toViewValue: v => Math.round(v * 90) + '°', }, scale: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.scale, + type: 'number', default: 3.0, min: 1.0, max: 10.0, step: 0.1, }, majorRadius: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.polkadotMainDotRadius, + type: 'number', default: 0.1, min: 0.0, max: 1.0, step: 0.01, }, majorOpacity: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.polkadotMainDotOpacity, + type: 'number', default: 0.75, min: 0.0, max: 1.0, @@ -115,21 +120,24 @@ export const FX_polkadot = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, minorDivisions: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.polkadotSubDotDivisions, + type: 'number', default: 4, min: 0, max: 16, step: 1, }, minorRadius: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.polkadotSubDotRadius, + type: 'number', default: 0.25, min: 0.0, max: 1.0, step: 0.01, }, minorOpacity: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.polkadotSubDotOpacity, + type: 'number', default: 0.5, min: 0.0, max: 1.0, @@ -137,7 +145,8 @@ export const FX_polkadot = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, color: { - type: 'color' as const, + label: i18n.ts._imageEffector._fxProps.color, + type: 'color', default: [1, 1, 1], }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/stripe.ts b/packages/frontend/src/utility/image-effector/fxs/stripe.ts index f6c1d2278d..1c054c1aaa 100644 --- a/packages/frontend/src/utility/image-effector/fxs/stripe.ts +++ b/packages/frontend/src/utility/image-effector/fxs/stripe.ts @@ -48,14 +48,16 @@ void main() { } `; +// Primarily used for watermark export const FX_stripe = defineImageEffectorFx({ - id: 'stripe' as const, + id: 'stripe', name: i18n.ts._imageEffector._fxs.stripe, shader, uniforms: ['angle', 'frequency', 'phase', 'threshold', 'color', 'opacity'] as const, params: { angle: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.angle, + type: 'number', default: 0.5, min: -1.0, max: 1.0, @@ -63,14 +65,16 @@ export const FX_stripe = defineImageEffectorFx({ toViewValue: v => Math.round(v * 90) + '°', }, frequency: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.stripeFrequency, + type: 'number', default: 10.0, min: 1.0, max: 30.0, step: 0.1, }, threshold: { - type: 'number' as const, + label: i18n.ts._watermarkEditor.stripeWidth, + type: 'number', default: 0.1, min: 0.0, max: 1.0, @@ -78,11 +82,13 @@ export const FX_stripe = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, color: { - type: 'color' as const, + label: i18n.ts._imageEffector._fxProps.color, + type: 'color', default: [1, 1, 1], }, opacity: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.opacity, + type: 'number', default: 0.5, min: 0.0, max: 1.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/tearing.ts b/packages/frontend/src/utility/image-effector/fxs/tearing.ts index d5f1e062ec..a1d5178d24 100644 --- a/packages/frontend/src/utility/image-effector/fxs/tearing.ts +++ b/packages/frontend/src/utility/image-effector/fxs/tearing.ts @@ -38,20 +38,22 @@ void main() { `; export const FX_tearing = defineImageEffectorFx({ - id: 'tearing' as const, + id: 'tearing', name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.tearing, shader, uniforms: ['amount', 'channelShift'] as const, params: { amount: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.amount, + type: 'number', default: 3, min: 1, max: 100, step: 1, }, strength: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.strength, + type: 'number', default: 0.05, min: -1, max: 1, @@ -59,7 +61,8 @@ export const FX_tearing = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, size: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.size, + type: 'number', default: 0.2, min: 0, max: 1, @@ -67,7 +70,8 @@ export const FX_tearing = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, channelShift: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.glitchChannelShift, + type: 'number', default: 0.5, min: 0, max: 10, @@ -75,7 +79,8 @@ export const FX_tearing = defineImageEffectorFx({ toViewValue: v => Math.round(v * 100) + '%', }, seed: { - type: 'seed' as const, + label: i18n.ts._imageEffector._fxProps.seed, + type: 'seed', default: 100, }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/threshold.ts b/packages/frontend/src/utility/image-effector/fxs/threshold.ts index f2b8b107fd..3e591fc939 100644 --- a/packages/frontend/src/utility/image-effector/fxs/threshold.ts +++ b/packages/frontend/src/utility/image-effector/fxs/threshold.ts @@ -27,27 +27,30 @@ void main() { `; export const FX_threshold = defineImageEffectorFx({ - id: 'threshold' as const, + id: 'threshold', name: i18n.ts._imageEffector._fxs.threshold, shader, uniforms: ['r', 'g', 'b'] as const, params: { r: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.redComponent, + type: 'number', default: 0.5, min: 0.0, max: 1.0, step: 0.01, }, g: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.greenComponent, + type: 'number', default: 0.5, min: 0.0, max: 1.0, step: 0.01, }, b: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.blueComponent, + type: 'number', default: 0.5, min: 0.0, max: 1.0, diff --git a/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts b/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts index 1c1c95b0c5..9b79e2bf94 100644 --- a/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts +++ b/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts @@ -83,46 +83,46 @@ void main() { `; export const FX_watermarkPlacement = defineImageEffectorFx({ - id: 'watermarkPlacement' as const, + id: 'watermarkPlacement', name: '(internal)', shader, uniforms: ['texture_watermark', 'resolution_watermark', 'scale', 'angle', 'opacity', 'repeat', 'alignX', 'alignY', 'fitMode'] as const, params: { cover: { - type: 'boolean' as const, + type: 'boolean', default: false, }, repeat: { - type: 'boolean' as const, + type: 'boolean', default: false, }, scale: { - type: 'number' as const, + type: 'number', default: 0.3, min: 0.0, max: 1.0, step: 0.01, }, angle: { - type: 'number' as const, + type: 'number', default: 0, min: -1.0, max: 1.0, step: 0.01, }, align: { - type: 'align' as const, + type: 'align', default: { x: 'right', y: 'bottom' }, }, opacity: { - type: 'number' as const, + type: 'number', default: 0.75, min: 0.0, max: 1.0, step: 0.01, }, watermark: { - type: 'texture' as const, + type: 'texture', default: null, }, }, diff --git a/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts b/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts index 2613362a71..2e16ebea3b 100644 --- a/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts +++ b/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts @@ -37,59 +37,68 @@ void main() { `; export const FX_zoomLines = defineImageEffectorFx({ - id: 'zoomLines' as const, + id: 'zoomLines', name: i18n.ts._imageEffector._fxs.zoomLines, shader, uniforms: ['pos', 'frequency', 'thresholdEnabled', 'threshold', 'maskSize', 'black'] as const, params: { x: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.centerX, + type: 'number', default: 0.0, min: -1.0, max: 1.0, step: 0.01, }, y: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.centerY, + type: 'number', default: 0.0, min: -1.0, max: 1.0, step: 0.01, }, frequency: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.frequency, + type: 'number', default: 30.0, min: 1.0, max: 200.0, step: 0.1, }, - thresholdEnabled: { - type: 'boolean' as const, - default: true, + smoothing: { + label: i18n.ts._imageEffector._fxProps.zoomLinesSmoothing, + caption: i18n.ts._imageEffector._fxProps.zoomLinesSmoothingDescription, + type: 'boolean', + default: false, }, threshold: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.zoomLinesThreshold, + type: 'number', default: 0.2, min: 0.0, max: 1.0, step: 0.01, }, maskSize: { - type: 'number' as const, + label: i18n.ts._imageEffector._fxProps.zoomLinesMaskSize, + type: 'number', default: 0.5, min: 0.0, max: 1.0, step: 0.01, }, black: { - type: 'boolean' as const, + label: i18n.ts._imageEffector._fxProps.zoomLinesBlack, + type: 'boolean', default: false, }, }, main: ({ gl, u, params }) => { gl.uniform2f(u.pos, (1.0 + params.x) / 2.0, (1.0 + params.y) / 2.0); gl.uniform1f(u.frequency, params.frequency); - gl.uniform1i(u.thresholdEnabled, params.thresholdEnabled ? 1 : 0); + // thresholdの調整が有効な間はsmoothingが利用できない + gl.uniform1i(u.thresholdEnabled, params.smoothing ? 0 : 1); gl.uniform1f(u.threshold, params.threshold); gl.uniform1f(u.maskSize, params.maskSize); gl.uniform1i(u.black, params.black ? 1 : 0); diff --git a/packages/frontend/src/utility/watermark.ts b/packages/frontend/src/utility/watermark.ts index f0b38684f0..75807b30c4 100644 --- a/packages/frontend/src/utility/watermark.ts +++ b/packages/frontend/src/utility/watermark.ts @@ -150,7 +150,6 @@ export class WatermarkRenderer { minorRadius: layer.minorRadius, minorOpacity: layer.minorOpacity, color: layer.color, - opacity: layer.opacity, }, }; } else if (layer.type === 'checker') { From 103d5a4b44c2950ba13add73ac062202533232d7 Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Sat, 9 Aug 2025 14:12:17 +0900 Subject: [PATCH 02/10] fix frontend tests broken with aiscript 1.0.0 (#16377) * test: update test for aiscript 1.0: line info in error * test: update test for aiscript 1.0: keyword in object literal --- packages/frontend/test/aiscript/api.test.ts | 17 ++++++++++++++--- packages/frontend/test/aiscript/ui.test.ts | 15 ++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/packages/frontend/test/aiscript/api.test.ts b/packages/frontend/test/aiscript/api.test.ts index ad24625b96..34f880286c 100644 --- a/packages/frontend/test/aiscript/api.test.ts +++ b/packages/frontend/test/aiscript/api.test.ts @@ -37,6 +37,17 @@ let $iMock = vi.hoisted | null >( () => null ); +function errorWithPos( + error: T, + line: number, + column: number, +): T { + const pos = { line, column }; + error.pos = pos; + error.message = error.message + `\n at (Line ${pos.line}, Column ${pos.column})`; + return error; +} + vi.mock('@/i.js', () => { return { get $i() { @@ -316,7 +327,7 @@ describe('AiScript common API', () => { await expect(() => exe(` Mk:api('https://example.com/api/ping', {}) `)).rejects.toStrictEqual( - new errors.AiScriptRuntimeError('invalid endpoint'), + errorWithPos(new errors.AiScriptRuntimeError('invalid endpoint'), 2, 11), ); expect(misskeyApiMock).not.toHaveBeenCalled(); }); @@ -325,7 +336,7 @@ describe('AiScript common API', () => { await expect(() => exe(` Mk:api('ping') `)).rejects.toStrictEqual( - new errors.AiScriptRuntimeError('expected param'), + errorWithPos(new errors.AiScriptRuntimeError('expected param'), 2, 11), ); expect(misskeyApiMock).not.toHaveBeenCalled(); }); @@ -353,7 +364,7 @@ describe('AiScript common API', () => { await expect(() => exe(` Mk:save('key') `)).rejects.toStrictEqual( - new errors.AiScriptRuntimeError('Expect anything, but got nothing.'), + errorWithPos(new errors.AiScriptRuntimeError('Expect anything, but got nothing.'), 2, 12), ); }); diff --git a/packages/frontend/test/aiscript/ui.test.ts b/packages/frontend/test/aiscript/ui.test.ts index 44a50aaa62..c9df070bec 100644 --- a/packages/frontend/test/aiscript/ui.test.ts +++ b/packages/frontend/test/aiscript/ui.test.ts @@ -316,10 +316,11 @@ describe('AiScript UI API', () => { describe('textInput', () => { test.concurrent('all options', async () => { + // https://github.com/aiscript-dev/aiscript/pull/948 const { root, get, outputs } = await exe(` let text_input = Ui:C:textInput({ onInput: print - default: 'a' + "default": 'a' label: 'b' caption: 'c' }, 'id') @@ -356,10 +357,11 @@ describe('AiScript UI API', () => { describe('textarea', () => { test.concurrent('all options', async () => { + // https://github.com/aiscript-dev/aiscript/pull/948 const { root, get, outputs } = await exe(` let textarea = Ui:C:textarea({ onInput: print - default: 'a' + "default": 'a' label: 'b' caption: 'c' }, 'id') @@ -396,10 +398,11 @@ describe('AiScript UI API', () => { describe('numberInput', () => { test.concurrent('all options', async () => { + // https://github.com/aiscript-dev/aiscript/pull/948 const { root, get, outputs } = await exe(` let number_input = Ui:C:numberInput({ onInput: print - default: 1 + "default": 1 label: 'a' caption: 'b' }, 'id') @@ -557,10 +560,11 @@ describe('AiScript UI API', () => { describe('switch', () => { test.concurrent('all options', async () => { + // https://github.com/aiscript-dev/aiscript/pull/948 const { root, get, outputs } = await exe(` let switch = Ui:C:switch({ onChange: print - default: false + "default": false label: 'a' caption: 'b' }, 'id') @@ -597,6 +601,7 @@ describe('AiScript UI API', () => { describe('select', () => { test.concurrent('all options', async () => { + // https://github.com/aiscript-dev/aiscript/pull/948 const { root, get, outputs } = await exe(` let select = Ui:C:select({ items: [ @@ -604,7 +609,7 @@ describe('AiScript UI API', () => { { text: 'B', value: 'b' } ] onChange: print - default: 'a' + "default": 'a' label: 'c' caption: 'd' }, 'id') From 2931eb0aad7f46eb7b47b4d0a3214c2d534727d5 Mon Sep 17 00:00:00 2001 From: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com> Date: Sat, 9 Aug 2025 14:13:37 +0900 Subject: [PATCH 03/10] =?UTF-8?q?Fix:=20=E3=83=81=E3=83=A3=E3=83=B3?= =?UTF-8?q?=E3=83=8D=E3=83=AB=E3=81=AE=E3=83=8F=E3=82=A4=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=88=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AB=E3=83=8E=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20(#1636?= =?UTF-8?q?4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): unable to see channel's featured notes * docs(changelog): update changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- CHANGELOG.md | 1 + packages/frontend/src/pages/channel.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94043c4c24..231e858e87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ - Fix: 一部の設定検索結果が存在しないパスになる問題を修正 (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1171) - Fix: テーマエディタが動作しない問題を修正 +- Fix: チャンネルのハイライトページにノートが表示されない問題を修正 - Fix: カラムの名前が正しくリスト/チャンネルの名前にならない問題を修正 ### Server diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue index 7ce42ea0cb..0437191695 100644 --- a/packages/frontend/src/pages/channel.vue +++ b/packages/frontend/src/pages/channel.vue @@ -112,7 +112,7 @@ const favorited = ref(false); const searchQuery = ref(''); const searchPaginator = shallowRef(); const searchKey = ref(''); -const featuredPaginator = markRaw(new Paginator('channels/featured', { +const featuredPaginator = markRaw(new Paginator('notes/featured', { limit: 10, computedParams: computed(() => ({ channelId: props.channelId, From 504f886065b73a7e2e2fc804a0b373f66de29a55 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 9 Aug 2025 14:14:16 +0900 Subject: [PATCH 04/10] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 231e858e87..4d6e7e4869 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,7 @@ - Feat: ページのタブバーを下部に表示できるように - Enhance: コントロールパネルを検索できるように - Enhance: トルコ語 (tr-TR) に対応 -- Enhance: 言語別のスクリプトバンドルを生成するように +- Enhance: 不必要な翻訳データを読み込まなくなり、パフォーマンスが向上しました - Enhance: 画像エフェクトのパラメータ名の多言語対応 - Fix: 投稿フォームでファイルのアップロードが中止または失敗した際のハンドリングを修正 - Fix: 一部の設定検索結果が存在しないパスになる問題を修正 From 0586dd98cb56eb9fe8d07a369e3256dfc50d2f9d 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, 9 Aug 2025 14:20:18 +0900 Subject: [PATCH 05/10] fix(deps): regenerate lockfile (#16384) --- pnpm-lock.yaml | 77 ++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 47 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 014d4b0b51..b391330c68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5522,9 +5522,6 @@ packages: axios@1.11.0: resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} - b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} @@ -9076,10 +9073,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -13759,7 +13752,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.46.2 @@ -14712,7 +14705,7 @@ snapshots: '@stylistic/eslint-plugin@2.13.0(eslint@9.33.0)(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.38.0(eslint@9.33.0)(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0)(typescript@5.9.2) eslint: 9.33.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -14986,7 +14979,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/archiver@6.0.3': dependencies: @@ -15022,7 +15015,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.36 - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/braces@3.0.1': {} @@ -15082,7 +15075,7 @@ snapshots: '@types/fluent-ffmpeg@2.1.27': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/graceful-fs@4.1.6': dependencies: @@ -15100,7 +15093,7 @@ snapshots: '@types/http-link-header@1.0.7': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/istanbul-lib-coverage@2.0.6': {} @@ -15121,7 +15114,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -15188,7 +15181,7 @@ snapshots: '@types/nodemailer@6.4.17': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/normalize-package-data@2.4.1': {} @@ -15199,11 +15192,11 @@ snapshots: '@types/oauth2orize@1.11.5': dependencies: '@types/express': 4.17.17 - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/oauth@0.9.6': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/offscreencanvas@2019.3.0': {} @@ -15215,7 +15208,7 @@ snapshots: '@types/pg@8.15.4': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 pg-protocol: 1.10.0 pg-types: 2.2.0 @@ -15233,7 +15226,7 @@ snapshots: '@types/qrcode@1.5.5': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/qs@6.9.7': {} @@ -15326,21 +15319,21 @@ snapshots: '@types/vary@1.1.3': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/wawoff2@1.0.2': dependencies: - '@types/node': 22.17.0 + '@types/node': 22.17.1 '@types/web-push@3.6.4': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/whatwg-mimetype@3.0.2': {} '@types/ws@8.18.1': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.17.1 '@types/yargs-parser@21.0.0': {} @@ -15471,8 +15464,8 @@ snapshots: '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.8.3) + '@typescript-eslint/types': 8.39.0 debug: 4.4.1(supports-color@10.0.0) typescript: 5.8.3 transitivePeerDependencies: @@ -15480,8 +15473,8 @@ snapshots: '@typescript-eslint/project-service@8.37.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.8.3) + '@typescript-eslint/types': 8.39.0 debug: 4.4.1(supports-color@10.0.0) typescript: 5.8.3 transitivePeerDependencies: @@ -15489,8 +15482,8 @@ snapshots: '@typescript-eslint/project-service@8.38.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 debug: 4.4.1(supports-color@10.0.0) typescript: 5.9.2 transitivePeerDependencies: @@ -15533,14 +15526,14 @@ snapshots: dependencies: typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 + '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 @@ -16392,14 +16385,6 @@ snapshots: transitivePeerDependencies: - debug - axios@1.8.4(debug@4.4.1): - dependencies: - follow-redirects: 1.15.9(debug@4.4.1) - form-data: 4.0.3 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - b4a@1.6.4: {} babel-jest@29.7.0(@babel/core@7.24.7): @@ -19333,7 +19318,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.16.4 + '@types/node': 22.17.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -20896,8 +20881,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pid-port@1.0.2: @@ -23004,7 +22987,7 @@ snapshots: expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 @@ -23048,7 +23031,7 @@ snapshots: expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 @@ -23188,7 +23171,7 @@ snapshots: wait-on@8.0.3(debug@4.4.1): dependencies: - axios: 1.8.4(debug@4.4.1) + axios: 1.11.0(debug@4.4.1) joi: 17.13.3 lodash: 4.17.21 minimist: 1.2.8 From b1b335d55a96764807c8ca2c2ec160e3573181ef 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, 9 Aug 2025 14:25:31 +0900 Subject: [PATCH 06/10] =?UTF-8?q?fix:=20=E3=83=81=E3=83=A3=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=81=AE=E5=88=A9=E7=94=A8=E5=8F=AF=E5=90=A6=E3=83=9D?= =?UTF-8?q?=E3=83=AA=E3=82=B7=E3=83=BC=E3=81=AE=E8=80=83=E6=85=AE=E6=BC=8F?= =?UTF-8?q?=E3=82=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20(#16259)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: チャットの利用可否ポリシーの考慮漏れを修正 * :art: --- .../backend/src/server/api/endpoints/chat/read-all.ts | 2 ++ .../endpoints/drive/files/attached-chat-messages.ts | 10 +++++++++- packages/frontend/src/pages/settings/other.vue | 6 ++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/chat/read-all.ts b/packages/backend/src/server/api/endpoints/chat/read-all.ts index 2ed9497eef..e2d9601aa6 100644 --- a/packages/backend/src/server/api/endpoints/chat/read-all.ts +++ b/packages/backend/src/server/api/endpoints/chat/read-all.ts @@ -32,6 +32,8 @@ export default class extends Endpoint { // eslint- private chatService: ChatService, ) { super(meta, paramDef, async (ps, me) => { + await this.chatService.checkChatAvailability(me.id, 'read'); + await this.chatService.readAllChatMessages(me.id); }); } diff --git a/packages/backend/src/server/api/endpoints/drive/files/attached-chat-messages.ts b/packages/backend/src/server/api/endpoints/drive/files/attached-chat-messages.ts index 5be477f468..b34ac4abd1 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/attached-chat-messages.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/attached-chat-messages.ts @@ -10,6 +10,7 @@ import { QueryService } from '@/core/QueryService.js'; import { DI } from '@/di-symbols.js'; import { RoleService } from '@/core/RoleService.js'; import { ChatEntityService } from '@/core/entities/ChatEntityService.js'; +import { ChatService } from '@/core/ChatService.js'; import { ApiError } from '../../../error.js'; export const meta = { @@ -60,14 +61,21 @@ export default class extends Endpoint { // eslint- @Inject(DI.chatMessagesRepository) private chatMessagesRepository: ChatMessagesRepository, + private chatService: ChatService, private chatEntityService: ChatEntityService, private queryService: QueryService, private roleService: RoleService, ) { super(meta, paramDef, async (ps, me) => { + const isModerator = await this.roleService.isModerator(me); + + if (!isModerator) { + await this.chatService.checkChatAvailability(me.id, 'read'); + } + const file = await this.driveFilesRepository.findOneBy({ id: ps.fileId, - userId: await this.roleService.isModerator(me) ? undefined : me.id, + userId: isModerator ? undefined : me.id, }); if (file == null) { diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue index c896ee8232..30ab2ce11e 100644 --- a/packages/frontend/src/pages/settings/other.vue +++ b/packages/frontend/src/pages/settings/other.vue @@ -128,9 +128,11 @@ SPDX-License-Identifier: AGPL-3.0-only
- Read all chat messages + {{ i18n.ts.migrateOldSettings }} From ddac2fb7a143e6095305f5b99b6ac0429923f3a7 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, 9 Aug 2025 14:26:03 +0900 Subject: [PATCH 07/10] =?UTF-8?q?fix(frontend-builder):=20=E8=A8=80?= =?UTF-8?q?=E8=AA=9E=E3=83=90=E3=83=B3=E3=83=89=E3=83=AB=E3=81=AE=E4=BD=9C?= =?UTF-8?q?=E6=88=90=E7=8A=B6=E6=B3=81=E3=81=8C=E3=83=AD=E3=82=B0=E3=81=AB?= =?UTF-8?q?=E6=AE=8B=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#16385)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend-builder/locale-inliner.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend-builder/locale-inliner.ts b/packages/frontend-builder/locale-inliner.ts index 75bcdc5b3f..9bef465eeb 100644 --- a/packages/frontend-builder/locale-inliner.ts +++ b/packages/frontend-builder/locale-inliner.ts @@ -69,8 +69,10 @@ export class LocaleInliner { async saveAllLocales(locales: Record) { const localeNames = Object.keys(locales); for (const localeName of localeNames) { + this.logger.info(`Creating bundle for ${localeName}`); await this.saveLocale(localeName, locales[localeName]); } + this.logger.info('Done'); } async saveLocale(localeName: string, localeJson: Locale) { From d8a137cb6c64aa0a4d49461591dc16eed94d90c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Aug 2025 14:26:52 +0900 Subject: [PATCH 08/10] chore(deps): update [tools] update dependencies (#16348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- scripts/changelog-checker/package-lock.json | 134 ++++++++++---------- scripts/changelog-checker/package.json | 10 +- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/scripts/changelog-checker/package-lock.json b/scripts/changelog-checker/package-lock.json index 4ed26757a6..5976ef9d4c 100644 --- a/scripts/changelog-checker/package-lock.json +++ b/scripts/changelog-checker/package-lock.json @@ -9,16 +9,16 @@ "version": "1.0.0", "devDependencies": { "@types/mdast": "4.0.4", - "@types/node": "22.15.31", - "@vitest/coverage-v8": "3.2.3", + "@types/node": "22.17.1", + "@vitest/coverage-v8": "3.2.4", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", - "typescript": "5.8.3", + "typescript": "5.9.2", "unified": "11.0.5", "vite": "6.3.5", - "vite-node": "3.2.3", - "vitest": "3.2.3" + "vite-node": "3.2.4", + "vitest": "3.2.4" } }, "node_modules/@ampproject/remapping": { @@ -940,9 +940,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.15.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", - "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "version": "22.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.1.tgz", + "integrity": "sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==", "dev": true, "license": "MIT", "dependencies": { @@ -956,9 +956,9 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.3.tgz", - "integrity": "sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", "dev": true, "license": "MIT", "dependencies": { @@ -980,8 +980,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.2.3", - "vitest": "3.2.3" + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -990,15 +990,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.3.tgz", - "integrity": "sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.3", - "@vitest/utils": "3.2.3", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1007,13 +1007,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.3.tgz", - "integrity": "sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.3", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1034,9 +1034,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", - "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -1047,13 +1047,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.3.tgz", - "integrity": "sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.3", + "@vitest/utils": "3.2.4", "pathe": "^2.0.3", "strip-literal": "^3.0.0" }, @@ -1062,13 +1062,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.3.tgz", - "integrity": "sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.3", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1077,9 +1077,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", - "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1090,14 +1090,14 @@ } }, "node_modules/@vitest/utils": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", - "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.3", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { @@ -1607,9 +1607,9 @@ } }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", "dev": true, "license": "MIT" }, @@ -2672,9 +2672,9 @@ } }, "node_modules/tinypool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", - "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -2712,9 +2712,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2912,9 +2912,9 @@ } }, "node_modules/vite-node": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz", - "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { @@ -2935,20 +2935,20 @@ } }, "node_modules/vitest": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.3.tgz", - "integrity": "sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.3", - "@vitest/mocker": "3.2.3", - "@vitest/pretty-format": "^3.2.3", - "@vitest/runner": "3.2.3", - "@vitest/snapshot": "3.2.3", - "@vitest/spy": "3.2.3", - "@vitest/utils": "3.2.3", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", @@ -2959,10 +2959,10 @@ "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", - "tinypool": "^1.1.0", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.3", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -2978,8 +2978,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.3", - "@vitest/ui": "3.2.3", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, diff --git a/scripts/changelog-checker/package.json b/scripts/changelog-checker/package.json index fa6cf09ea1..b02ca46cb9 100644 --- a/scripts/changelog-checker/package.json +++ b/scripts/changelog-checker/package.json @@ -10,15 +10,15 @@ }, "devDependencies": { "@types/mdast": "4.0.4", - "@types/node": "22.15.31", - "@vitest/coverage-v8": "3.2.3", + "@types/node": "22.17.1", + "@vitest/coverage-v8": "3.2.4", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", - "typescript": "5.8.3", + "typescript": "5.9.2", "unified": "11.0.5", "vite": "6.3.5", - "vite-node": "3.2.3", - "vitest": "3.2.3" + "vite-node": "3.2.4", + "vitest": "3.2.4" } } From 1b0de39f929ddad1dd8321d0e4b7a38e85173b5c Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 9 Aug 2025 14:27:48 +0900 Subject: [PATCH 09/10] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d6e7e4869..e5b171f4ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ - Enhance: トルコ語 (tr-TR) に対応 - Enhance: 不必要な翻訳データを読み込まなくなり、パフォーマンスが向上しました - Enhance: 画像エフェクトのパラメータ名の多言語対応 +- Enhance: 依存ソフトウェアの更新 - Fix: 投稿フォームでファイルのアップロードが中止または失敗した際のハンドリングを修正 - Fix: 一部の設定検索結果が存在しないパスになる問題を修正 (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1171) @@ -44,6 +45,7 @@ ### Server - Enhance: ノートの削除処理の効率化 - Enhance: 全体的なパフォーマンスの向上 +- Enhance: 依存ソフトウェアの更新 - Fix: SystemWebhook設定でsecretを空に出来ない問題を修正 From 72864fcbd01003918ad04a04623a015cbf2f0150 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 9 Aug 2025 05:27:57 +0000 Subject: [PATCH 10/10] Bump version to 2025.8.0-alpha.7 --- 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 3195a538bf..9078e3dc5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.8.0-alpha.6", + "version": "2025.8.0-alpha.7", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 718cefa301..c160b968b5 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.8.0-alpha.6", + "version": "2025.8.0-alpha.7", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js",