From 42706970f21b314439790d0baf5f203a2e03100c 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: Mon, 24 Nov 2025 20:53:39 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20Play=E3=81=AEAiScript=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E5=88=A4=E5=AE=9A=E3=81=8C?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=8F=E5=8B=95=E4=BD=9C=E3=81=97=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(#1684?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: aiscript 1.0.0 以外が全部レガシー扱いになる問題を修正 (MisskeyIO#1129) * Update Changelog --------- Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com> --- CHANGELOG.md | 2 ++ packages/frontend/src/aiscript/common.ts | 7 +++++++ packages/frontend/src/pages/flash/flash.vue | 4 +++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bef64c2a15..fd7f059c30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ - Fix: ヘッダーメニューのチャンネルの新規作成の項目でチャンネル作成ページに飛べない問題を修正 #16816 - Fix: 一部のシチュエーションで投稿フォームのツアーが正しく表示されない問題を修正 - Fix: 投稿フォームのリセットボタンで注釈がリセットされない問題を修正 +- Fix: PlayのAiScriptバージョン判定(v0.x系・v1.x系の判定)が正しく動作しない問題を修正 + (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/1129) ### Server - Enhance: `clips/my-favorites` APIがページネーションに対応しました diff --git a/packages/frontend/src/aiscript/common.ts b/packages/frontend/src/aiscript/common.ts index ba5dfb8368..806a9b5965 100644 --- a/packages/frontend/src/aiscript/common.ts +++ b/packages/frontend/src/aiscript/common.ts @@ -6,6 +6,13 @@ import { errors, utils } from '@syuilo/aiscript'; import type { values } from '@syuilo/aiscript'; +const extractVersionIdentifier = /^\/\/\/\s*@\s*(\d+)\.(\d+)\.\d+$/m; + +export function getAiScriptVersion(script: string): { major: number; minor: number } | undefined { + const match = extractVersionIdentifier.exec(script); + return match ? { major: Number(match[1]), minor: Number(match[2]) } : undefined; +} + export function assertStringAndIsIn(value: values.Value | undefined, expects: A): asserts value is values.VStr & { value: A[number] } { utils.assertString(value); const str = value.value; diff --git a/packages/frontend/src/pages/flash/flash.vue b/packages/frontend/src/pages/flash/flash.vue index f318a9f817..f6da46be22 100644 --- a/packages/frontend/src/pages/flash/flash.vue +++ b/packages/frontend/src/pages/flash/flash.vue @@ -74,6 +74,7 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import MkAsUi from '@/components/MkAsUi.vue'; +import { getAiScriptVersion } from '@/aiscript/common.js'; import { registerAsUiLib } from '@/aiscript/ui.js'; import { aiScriptReadline, createAiScriptEnv } from '@/aiscript/api.js'; import MkFolder from '@/components/MkFolder.vue'; @@ -194,7 +195,8 @@ async function run() { if (aiscript.value) aiscript.value.abort(); if (!flash.value) return; - const isLegacy = !flash.value.script.replaceAll(' ', '').startsWith('///@1.0.0'); + const version = getAiScriptVersion(flash.value.script); + const isLegacy = version ? version.major < 1 : false; const { Interpreter, Parser, values } = isLegacy ? (await import('@syuilo/aiscript-0-19-0') as any) : await import('@syuilo/aiscript');