Files
borges/scripts/fix-wpm.mjs
2026-06-15 20:00:41 +10:00

32 lines
1.0 KiB
JavaScript

#!/usr/bin/env node
// One-time migration: zero out WPM for sessions that are clearly paste artifacts.
// A session is flagged when activeMs < 5000 (sub-5-second burst) and the resulting
// WPM exceeds 300 — no human types that fast.
import { readFileSync, writeFileSync, cpSync } from 'fs'
const TELEMETRY = `${process.env.HOME}/Library/Application Support/Borges/.borges/telemetry.json`
const BACKUP = TELEMETRY + '.bak'
const sessions = JSON.parse(readFileSync(TELEMETRY, 'utf-8'))
let fixed = 0
const patched = sessions.map(s => {
if (s.wpm > 300 && s.activeMs < 5000) {
fixed++
console.log(`Fixing session ${s.id} (${s.storyId}): wpm ${s.wpm} → 0 [activeMs=${s.activeMs}, words ${s.wordsStart}${s.wordsEnd}]`)
return { ...s, wpm: 0 }
}
return s
})
if (fixed === 0) {
console.log('No sessions to fix.')
process.exit(0)
}
cpSync(TELEMETRY, BACKUP)
console.log(`Backed up to ${BACKUP}`)
writeFileSync(TELEMETRY, JSON.stringify(patched, null, 2), 'utf-8')
console.log(`Done. Fixed ${fixed} session(s).`)