diff --git a/openspec/changes/code-review-fix/tasks.md b/openspec/changes/code-review-fix/tasks.md index ba9a79d..ec2d8e6 100644 --- a/openspec/changes/code-review-fix/tasks.md +++ b/openspec/changes/code-review-fix/tasks.md @@ -36,7 +36,7 @@ - [x] 4.8 `[sonnet]` Wrap chart cascade delete in `db.transaction()` and add `spanAnnotations` deletion in `src/app/api/charts/[id]/route.ts` - [x] 4.9 `[haiku]` Add `parseInt(value, 10)` with `isNaN()` guard to all routes parsing integer query params - [x] 4.10 `[sonnet]` Add CSV injection protection (prefix `=+@-` cells with `'`) to all export routes -- [ ] 4.11 `[sonnet]` Add `response.ok` checks before `.json()` in `src/app/page.tsx` (lines 214, 230, 245, 257) +- [x] 4.11 `[sonnet]` Add `response.ok` checks before `.json()` in `src/app/page.tsx` (lines 214, 230, 245, 257) - [ ] 4.12 `[sonnet]` Add `response.ok` checks before `.json()` in `src/components/CandleChart.tsx` (lines 163, 178, 192) ## 5. ML Service Hardening (Python) diff --git a/src/app/page.tsx b/src/app/page.tsx index 6ea49c1..87e8f2c 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -211,6 +211,7 @@ export default function Home() { const fetchCharts = useCallback(async () => { try { const response = await fetch('/api/charts'); + if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); const data = await response.json(); setCharts(data); return data as Chart[]; @@ -228,6 +229,7 @@ export default function Home() { } try { const response = await fetch(`/api/annotations?chartId=${chartId}`); + if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); const data = await response.json(); setAnnotations(data); } catch (error) { @@ -243,6 +245,7 @@ export default function Home() { } try { const response = await fetch(`/api/span-annotations?chartId=${chartId}`); + if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); const data = await response.json(); setSpanAnnotations(data); } catch (error) { @@ -254,6 +257,7 @@ export default function Home() { const fetchSpanLabelTypes = useCallback(async () => { try { const response = await fetch('/api/span-label-types'); + if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); const data = await response.json(); setSpanLabelTypes(data); } catch (error) {