From 9794a5a3290a9f7846aae164845ccc60c3a9f302 Mon Sep 17 00:00:00 2001 From: yuanzonghao Date: Sat, 6 Jun 2026 21:39:24 +0800 Subject: [PATCH] fix(play): fix CLAUDE.md typo and dialogue history memo anti-pattern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix @AGETNTS.md → @AGENTS.md typo in CLAUDE.md - Remove ref read inside useMemo (React anti-pattern causing one-frame stale data) - Simplify buildDialogueHistory to read visitedBeatIds directly from session.history, which also fixes incorrect scene-ID matching when the same ID appears multiple times Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 2 +- app/play/page.tsx | 16 +++------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a645528..eef4bd2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1 +1 @@ -@AGETNTS.md \ No newline at end of file +@AGENTS.md \ No newline at end of file diff --git a/app/play/page.tsx b/app/play/page.tsx index 225ffc7..e7d2fa4 100644 --- a/app/play/page.tsx +++ b/app/play/page.tsx @@ -268,17 +268,12 @@ type ScenePathStep = { function buildDialogueHistory( session: Session | null, - currentSceneId: string | undefined, - currentVisitedBeatIds: string[], ): DialogueHistoryItem[] { if (!session) return []; return session.history.flatMap((entry, sceneIndex) => { const beatsById = new Map(entry.scene.beats.map((b) => [b.id, b])); - const visitedBeatIds = - entry.scene.id === currentSceneId - ? currentVisitedBeatIds - : entry.visitedBeatIds; + const visitedBeatIds = entry.visitedBeatIds; return visitedBeatIds.flatMap((beatId, beatIndex) => { const beat = beatsById.get(beatId); @@ -611,13 +606,8 @@ function PlayInner() { }, [currentScene, currentBeatId]); const dialogueHistory = useMemo( - () => - buildDialogueHistory( - session, - currentScene?.id, - visitedBeatsRef.current, - ), - [session, currentScene?.id, currentBeatId], + () => buildDialogueHistory(session), + [session], ); const audioSrc = (currentBeat ? beatAudioMap[currentBeat.id] : undefined) ?? null;