diff --git a/.github/changelog_template.md b/.github/changelog_template.md index 8a1e679..daf87b1 100644 --- a/.github/changelog_template.md +++ b/.github/changelog_template.md @@ -5,4 +5,4 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -{{changelog}} \ No newline at end of file +{{changelog}} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 621338b..f5180f4 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -80,4 +80,4 @@ jobs: cat "$notebook" exit 1 fi - done \ No newline at end of file + done diff --git a/.github/workflows/versioning.yaml b/.github/workflows/versioning.yaml index e23dcb8..06a5fec 100644 --- a/.github/workflows/versioning.yaml +++ b/.github/workflows/versioning.yaml @@ -60,4 +60,4 @@ jobs: user: __token__ password: ${{ secrets.PYPI }} skip-existing: true - \ No newline at end of file + diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29..ed5c8a9 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Fixed critical React Server Components CVE vulnerabilities (CVE-2025-55182, CVE-2025-66478) diff --git a/docs/intro.md b/docs/intro.md index 9e4e4cf..d5326e3 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -89,4 +89,4 @@ print(robustness['recommendation']) - **GitHub issues**: https://github.com/PolicyEngine/microcalibrate/issues - **Documentation**: https://policyengine.github.io/microcalibrate/ -- **Performance dashboard**: https://microcalibrate.vercel.app/ \ No newline at end of file +- **Performance dashboard**: https://microcalibrate.vercel.app/ diff --git a/microcalibration-dashboard/package-lock.json b/microcalibration-dashboard/package-lock.json index 84a6a89..3785628 100644 --- a/microcalibration-dashboard/package-lock.json +++ b/microcalibration-dashboard/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "jszip": "^3.10.1", "lucide-react": "^0.522.0", - "next": "15.3.4", + "next": "15.3.8", "papaparse": "^5.5.3", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -785,9 +785,9 @@ } }, "node_modules/@next/env": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.4.tgz", - "integrity": "sha512-ZkdYzBseS6UjYzz6ylVKPOK+//zLWvD6Ta+vpoye8cW11AjiQjGYVibF0xuvT4L0iJfAPfZLFidaEzAOywyOAQ==", + "version": "15.3.8", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.8.tgz", + "integrity": "sha512-SAfHg0g91MQVMPioeFeDjE+8UPF3j3BvHjs8ZKJAUz1BG7eMPvfCKOAgNWJ6s1MLNeP6O2InKQRTNblxPWuq+Q==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -801,9 +801,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.4.tgz", - "integrity": "sha512-z0qIYTONmPRbwHWvpyrFXJd5F9YWLCsw3Sjrzj2ZvMYy9NPQMPZ1NjOJh4ojr4oQzcGYwgJKfidzehaNa1BpEg==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.5.tgz", + "integrity": "sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==", "cpu": [ "arm64" ], @@ -817,9 +817,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.4.tgz", - "integrity": "sha512-Z0FYJM8lritw5Wq+vpHYuCIzIlEMjewG2aRkc3Hi2rcbULknYL/xqfpBL23jQnCSrDUGAo/AEv0Z+s2bff9Zkw==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.5.tgz", + "integrity": "sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==", "cpu": [ "x64" ], @@ -833,9 +833,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.4.tgz", - "integrity": "sha512-l8ZQOCCg7adwmsnFm8m5q9eIPAHdaB2F3cxhufYtVo84pymwKuWfpYTKcUiFcutJdp9xGHC+F1Uq3xnFU1B/7g==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.5.tgz", + "integrity": "sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==", "cpu": [ "arm64" ], @@ -849,9 +849,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.4.tgz", - "integrity": "sha512-wFyZ7X470YJQtpKot4xCY3gpdn8lE9nTlldG07/kJYexCUpX1piX+MBfZdvulo+t1yADFVEuzFfVHfklfEx8kw==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.5.tgz", + "integrity": "sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==", "cpu": [ "arm64" ], @@ -865,9 +865,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.4.tgz", - "integrity": "sha512-gEbH9rv9o7I12qPyvZNVTyP/PWKqOp8clvnoYZQiX800KkqsaJZuOXkWgMa7ANCCh/oEN2ZQheh3yH8/kWPSEg==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.5.tgz", + "integrity": "sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==", "cpu": [ "x64" ], @@ -881,9 +881,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.4.tgz", - "integrity": "sha512-Cf8sr0ufuC/nu/yQ76AnarbSAXcwG/wj+1xFPNbyNo8ltA6kw5d5YqO8kQuwVIxk13SBdtgXrNyom3ZosHAy4A==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.5.tgz", + "integrity": "sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==", "cpu": [ "x64" ], @@ -897,9 +897,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.4.tgz", - "integrity": "sha512-ay5+qADDN3rwRbRpEhTOreOn1OyJIXS60tg9WMYTWCy3fB6rGoyjLVxc4dR9PYjEdR2iDYsaF5h03NA+XuYPQQ==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.5.tgz", + "integrity": "sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==", "cpu": [ "arm64" ], @@ -913,9 +913,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.4.tgz", - "integrity": "sha512-4kDt31Bc9DGyYs41FTL1/kNpDeHyha2TC0j5sRRoKCyrhNcfZ/nRQkAUlF27mETwm8QyHqIjHJitfcza2Iykfg==", + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.5.tgz", + "integrity": "sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==", "cpu": [ "x64" ], @@ -5009,12 +5009,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.3.4", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.4.tgz", - "integrity": "sha512-mHKd50C+mCjam/gcnwqL1T1vPx/XQNFlXqFIVdgQdVAFY9iIQtY0IfaVflEYzKiqjeA7B0cYYMaCrmAYFjs4rA==", + "version": "15.3.8", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.8.tgz", + "integrity": "sha512-L+4c5Hlr84fuaNADZbB9+ceRX9/CzwxJ+obXIGHupboB/Q1OLbSUapFs4bO8hnS/E6zV/JDX7sG1QpKVR2bguA==", "license": "MIT", "dependencies": { - "@next/env": "15.3.4", + "@next/env": "15.3.8", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -5029,14 +5029,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.4", - "@next/swc-darwin-x64": "15.3.4", - "@next/swc-linux-arm64-gnu": "15.3.4", - "@next/swc-linux-arm64-musl": "15.3.4", - "@next/swc-linux-x64-gnu": "15.3.4", - "@next/swc-linux-x64-musl": "15.3.4", - "@next/swc-win32-arm64-msvc": "15.3.4", - "@next/swc-win32-x64-msvc": "15.3.4", + "@next/swc-darwin-arm64": "15.3.5", + "@next/swc-darwin-x64": "15.3.5", + "@next/swc-linux-arm64-gnu": "15.3.5", + "@next/swc-linux-arm64-musl": "15.3.5", + "@next/swc-linux-x64-gnu": "15.3.5", + "@next/swc-linux-x64-musl": "15.3.5", + "@next/swc-win32-arm64-msvc": "15.3.5", + "@next/swc-win32-x64-msvc": "15.3.5", "sharp": "^0.34.1" }, "peerDependencies": { diff --git a/microcalibration-dashboard/package.json b/microcalibration-dashboard/package.json index 3721662..db346e6 100644 --- a/microcalibration-dashboard/package.json +++ b/microcalibration-dashboard/package.json @@ -13,7 +13,7 @@ "dependencies": { "jszip": "^3.10.1", "lucide-react": "^0.522.0", - "next": "15.3.4", + "next": "15.3.8", "papaparse": "^5.5.3", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/microcalibration-dashboard/src/app/page.tsx b/microcalibration-dashboard/src/app/page.tsx index 80818e3..3878c84 100644 --- a/microcalibration-dashboard/src/app/page.tsx +++ b/microcalibration-dashboard/src/app/page.tsx @@ -281,4 +281,4 @@ export default function Dashboard() { ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/CalibrationSummary.tsx b/microcalibration-dashboard/src/components/CalibrationSummary.tsx index 24b448c..cbceb94 100644 --- a/microcalibration-dashboard/src/components/CalibrationSummary.tsx +++ b/microcalibration-dashboard/src/components/CalibrationSummary.tsx @@ -412,4 +412,4 @@ export default function CalibrationSummary({ data }: CalibrationSummaryProps) { )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/ComparisonCharts.tsx b/microcalibration-dashboard/src/components/ComparisonCharts.tsx index c559bb3..87e67e2 100644 --- a/microcalibration-dashboard/src/components/ComparisonCharts.tsx +++ b/microcalibration-dashboard/src/components/ComparisonCharts.tsx @@ -294,4 +294,4 @@ export default function ComparisonCharts({ firstData, secondData, firstName, sec )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/ComparisonDataTable.tsx b/microcalibration-dashboard/src/components/ComparisonDataTable.tsx index 8694774..62a6c44 100644 --- a/microcalibration-dashboard/src/components/ComparisonDataTable.tsx +++ b/microcalibration-dashboard/src/components/ComparisonDataTable.tsx @@ -546,4 +546,4 @@ export default function ComparisonDataTable({ )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/ComparisonQualitySummary.tsx b/microcalibration-dashboard/src/components/ComparisonQualitySummary.tsx index 4851111..84b3fa8 100644 --- a/microcalibration-dashboard/src/components/ComparisonQualitySummary.tsx +++ b/microcalibration-dashboard/src/components/ComparisonQualitySummary.tsx @@ -212,4 +212,4 @@ export default function ComparisonQualitySummary({ ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/ComparisonSummary.tsx b/microcalibration-dashboard/src/components/ComparisonSummary.tsx index c739755..a49e347 100644 --- a/microcalibration-dashboard/src/components/ComparisonSummary.tsx +++ b/microcalibration-dashboard/src/components/ComparisonSummary.tsx @@ -386,4 +386,4 @@ export default function ComparisonSummary({ firstData, secondData, firstName, se )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/DataTable.tsx b/microcalibration-dashboard/src/components/DataTable.tsx index a9a61ae..61d1a0d 100644 --- a/microcalibration-dashboard/src/components/DataTable.tsx +++ b/microcalibration-dashboard/src/components/DataTable.tsx @@ -241,4 +241,4 @@ export default function DataTable({ data }: DataTableProps) { )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/ErrorDistribution.tsx b/microcalibration-dashboard/src/components/ErrorDistribution.tsx index 577c2ee..5032723 100644 --- a/microcalibration-dashboard/src/components/ErrorDistribution.tsx +++ b/microcalibration-dashboard/src/components/ErrorDistribution.tsx @@ -120,4 +120,4 @@ export default function ErrorDistribution({ data }: ErrorDistributionProps) { ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/LossChart.tsx b/microcalibration-dashboard/src/components/LossChart.tsx index d6fe98e..1671be1 100644 --- a/microcalibration-dashboard/src/components/LossChart.tsx +++ b/microcalibration-dashboard/src/components/LossChart.tsx @@ -245,4 +245,4 @@ export default function LossChart({ data }: LossChartProps) { ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/MetricsOverview.tsx b/microcalibration-dashboard/src/components/MetricsOverview.tsx index 03f9d34..123770e 100644 --- a/microcalibration-dashboard/src/components/MetricsOverview.tsx +++ b/microcalibration-dashboard/src/components/MetricsOverview.tsx @@ -201,4 +201,4 @@ export default function MetricsOverview({ data }: MetricsOverviewProps) { ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/RegressionAnalysis.tsx b/microcalibration-dashboard/src/components/RegressionAnalysis.tsx index b6b19b7..5631188 100644 --- a/microcalibration-dashboard/src/components/RegressionAnalysis.tsx +++ b/microcalibration-dashboard/src/components/RegressionAnalysis.tsx @@ -266,4 +266,4 @@ export default function RegressionAnalysis({ firstData, secondData }: Regression ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/SingleDatasetBarChart.tsx b/microcalibration-dashboard/src/components/SingleDatasetBarChart.tsx index 65791d1..23be1ba 100644 --- a/microcalibration-dashboard/src/components/SingleDatasetBarChart.tsx +++ b/microcalibration-dashboard/src/components/SingleDatasetBarChart.tsx @@ -357,4 +357,4 @@ export default function SingleDatasetBarChart({ data }: SingleDatasetBarChartPro )} ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/components/TargetConvergenceComparison.tsx b/microcalibration-dashboard/src/components/TargetConvergenceComparison.tsx index a25471b..44ac0e5 100644 --- a/microcalibration-dashboard/src/components/TargetConvergenceComparison.tsx +++ b/microcalibration-dashboard/src/components/TargetConvergenceComparison.tsx @@ -845,4 +845,4 @@ export default function TargetConvergenceComparison({ ); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/types/calibration.ts b/microcalibration-dashboard/src/types/calibration.ts index 93b4c0e..9e224c3 100644 --- a/microcalibration-dashboard/src/types/calibration.ts +++ b/microcalibration-dashboard/src/types/calibration.ts @@ -14,4 +14,4 @@ export interface CalibrationMetrics { targetNames: string[]; finalLoss: number; convergenceEpoch?: number; -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/utils/csvParser.ts b/microcalibration-dashboard/src/utils/csvParser.ts index 62a89b6..7af97ba 100644 --- a/microcalibration-dashboard/src/utils/csvParser.ts +++ b/microcalibration-dashboard/src/utils/csvParser.ts @@ -70,4 +70,4 @@ export function getCalibrationMetrics(data: CalibrationDataPoint[]): Calibration finalLoss, convergenceEpoch, }; -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/utils/deeplinks.ts b/microcalibration-dashboard/src/utils/deeplinks.ts index d7a8006..3acc4ba 100644 --- a/microcalibration-dashboard/src/utils/deeplinks.ts +++ b/microcalibration-dashboard/src/utils/deeplinks.ts @@ -88,4 +88,4 @@ export function getCurrentDeeplinkParams(): DeeplinkParams | null { const searchParams = new URLSearchParams(window.location.search); return decodeDeeplink(searchParams); -} \ No newline at end of file +} diff --git a/microcalibration-dashboard/src/utils/targetOrdering.ts b/microcalibration-dashboard/src/utils/targetOrdering.ts index ac1af4a..f5ade6c 100644 --- a/microcalibration-dashboard/src/utils/targetOrdering.ts +++ b/microcalibration-dashboard/src/utils/targetOrdering.ts @@ -106,4 +106,4 @@ export function sortTargetsWithRelevance(targets: string[], searchQuery: string) ...sortTargetNames(startsWithMatches), ...sortTargetNames(containsMatches) ]; -} \ No newline at end of file +}