fix(play): fix CLAUDE.md typo and dialogue history memo anti-pattern

- 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 <noreply@anthropic.com>
This commit is contained in:
yuanzonghao
2026-06-06 21:39:24 +08:00
parent 5a7daa8452
commit 9794a5a329
2 changed files with 4 additions and 14 deletions
+1 -1
View File
@@ -1 +1 @@
@AGETNTS.md
@AGENTS.md
+3 -13
View File
@@ -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<DialogueHistoryItem[]>(
() =>
buildDialogueHistory(
session,
currentScene?.id,
visitedBeatsRef.current,
),
[session, currentScene?.id, currentBeatId],
() => buildDialogueHistory(session),
[session],
);
const audioSrc = (currentBeat ? beatAudioMap[currentBeat.id] : undefined) ?? null;