diff --git a/frontend/src/components/Transport/TransportControls.tsx b/frontend/src/components/Transport/TransportControls.tsx index aede9a3..46379c8 100644 --- a/frontend/src/components/Transport/TransportControls.tsx +++ b/frontend/src/components/Transport/TransportControls.tsx @@ -247,7 +247,7 @@ export function TransportControls() { )} { const f = e.target.files?.[0]; diff --git a/frontend/src/store/useAppStore.ts b/frontend/src/store/useAppStore.ts index 8c832d3..382c08b 100644 --- a/frontend/src/store/useAppStore.ts +++ b/frontend/src/store/useAppStore.ts @@ -313,7 +313,7 @@ export const useAppStore = create((set, get) => { try { const id = crypto.randomUUID(); // M4 - strip path separators, control chars; cap length - const rawTitle = file.name.replace(/\.(xml|mxl)$/i, ""); + const rawTitle = file.name.replace(/\.(xml|musicxml|mxl)$/i, ""); const title = rawTitle.replace(/[\x00-\x1f\x7f/\\]/g, "").slice(0, 200) || "Untitled"; const xmlBytes = await file.arrayBuffer(); diff --git a/frontend/src/views/PracticeView.tsx b/frontend/src/views/PracticeView.tsx index 12b1501..6a288c2 100644 --- a/frontend/src/views/PracticeView.tsx +++ b/frontend/src/views/PracticeView.tsx @@ -116,7 +116,7 @@ export function PracticeView() { const loadFile = useCallback( (file: File) => { if (file.name.match(/\.midi?$/i)) loadMidiFile(file); - else if (file.name.match(/\.(xml|mxl)$/i)) loadMusicXmlFile(file); + else if (file.name.match(/\.(xml|musicxml|mxl)$/i)) loadMusicXmlFile(file); else if (file.name.match(/\.pdf$/i)) loadPdfFile(file); else if (file.name.match(/\.(mp3|wav|m4a|ogg|flac|aac)$/i)) loadAudioFile(file); }, @@ -424,7 +424,7 @@ function EmptyState({ onImport }: { onImport: (file: File) => void }) { { const f = e.target.files?.[0];