Skip to content

Commit 2a80ae1

Browse files
fix(core): gate parseBeats on schema version
parseBeats accepted any object with a beats array, so a future v2 beat file (with changed semantics) would be parsed silently as v1. Reject anything whose version is not 1, treating an unknown version like an absent/invalid file. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Miguel Ángel <miguel07alm@protonmail.com>
1 parent eb24fb3 commit 2a80ae1

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

packages/core/src/beats/beatFile.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ export function serializeBeats(times: number[], strengths: number[], audio: stri
5959
export function parseBeats(content: string): { times: number[]; strengths: number[] } | null {
6060
try {
6161
const data = JSON.parse(content) as BeatFileData;
62-
if (!data || !Array.isArray(data.beats)) return null;
62+
// Gate on the schema version so a future v2 file (with changed semantics)
63+
// isn't silently parsed as v1 — an unknown version is treated as absent.
64+
if (!data || data.version !== 1 || !Array.isArray(data.beats)) return null;
6365
const times: number[] = [];
6466
const strengths: number[] = [];
6567
for (const b of data.beats) {

0 commit comments

Comments
 (0)