with open("frontend/src/App.tsx", "r", encoding="utf-8") as f: content = f.read() import re # Add listSegmentEdits to import content = content.replace("listMarkers,", "listMarkers,\n listSegmentEdits,") # Fetch segment_edits in handleSelectVideo old_handle_select = """ try { const response = await listMarkers(item.id); setMarkers(normalizeMarkers(response.markers ?? [])); } catch (err) {""" new_handle_select = """ try { const response = await listMarkers(item.id); setMarkers(normalizeMarkers(response.markers ?? [])); const editsResponse = await listSegmentEdits(item.id); if (editsResponse.segments && editsResponse.segments.length > 0) { setIsLinked(false); setCustomSegmentRows( editsResponse.segments.map((se) => ({ kind: se.segment_key.startsWith("segment_") ? "core" : (se.segment_key as any), label: se.segment_key, start: se.start_seconds, end: se.end_seconds, startEditable: true, endEditable: true, coreIndex: se.segment_key.startsWith("segment_") ? parseInt(se.segment_key.split("_")[1]) - 1 : undefined, })) ); } else { setIsLinked(true); setCustomSegmentRows([]); } } catch (err) {""" content = content.replace(old_handle_select, new_handle_select) with open("frontend/src/App.tsx", "w", encoding="utf-8") as f: f.write(content) print("App.tsx fetch segment_edits patched")