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');