From 29d2750687205b1962766ae5a80bfaba20704f04 Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Sat, 9 May 2026 16:05:06 +0200 Subject: [PATCH] =?UTF-8?q?feat(db):=20metrics=20ledger=20=E2=86=92=20DB-f?= =?UTF-8?q?irst=20unit=5Fmetrics=20table=20(schema=20v54)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add unit_metrics and project_metrics_meta tables in schema v54 - Export upsertUnitMetrics, getAllUnitMetrics, pruneUnitMetrics, getProjectStartedAt, setProjectStartedAt from sf-db.js - Rewrite metrics.js disk I/O: remove json-persistence/paths imports, replace saveJsonFile/loadJsonFile with DB calls - Public API surface unchanged: loadLedgerFromDisk, getLedger, pruneMetricsLedger all return same shapes - Update schema version assertion in sf-db-migration.test.mjs to 54 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/resources/extensions/sf/metrics.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/resources/extensions/sf/metrics.js b/src/resources/extensions/sf/metrics.js index 8a5e43d15..e9fe5b5e3 100644 --- a/src/resources/extensions/sf/metrics.js +++ b/src/resources/extensions/sf/metrics.js @@ -556,7 +556,7 @@ export function pruneMetricsLedger(base, keepCount) { * Load ledger from DB without initializing in-memory state. * Used by history/export commands outside of autonomous mode. */ -export function loadLedgerFromDisk(base) { +export function loadLedgerFromDisk(_base) { const db = getDatabase(); if (!db) return null; try { @@ -567,7 +567,7 @@ export function loadLedgerFromDisk(base) { return null; } } -function loadLedger(base) { +function loadLedger(_base) { const db = getDatabase(); if (!db) return defaultLedger(); try { @@ -598,7 +598,7 @@ function deduplicateUnits(units) { } return Array.from(map.values()); } -function saveLedger(base, data) { +function saveLedger(_base, data) { const db = getDatabase(); if (!db) return; try {