AnasSarkiz/muse-voice-remote

Muse Voice Remote — bare ESP32-S3R8, 155 TOP JLCPCB parts with real supplier CAD, native 3D assembly and GLB exports. Revised 17 mm case allocation; 0.30 mm via drill /0.45 mm pad. Checked prototype PCB; mechanical, RF and MUSE qualification pending.

Version
1.3.2
License
unset
Stars
0

scripts/restore-jlcpcb-cad.ts

import { readFile, writeFile } from "node:fs/promises"
import { createHash } from "node:crypto"
import { preserveSupplierCad } from "./preserve-jlcpcb-cad"

const manifestPath = "vendor/jlcpcb/import-manifest.json"
const manifest = JSON.parse(await readFile(manifestPath, "utf8"))
for (const entry of manifest.imports) {
  const circuit = JSON.parse(await readFile(`vendor/jlcpcb/${entry.lcsc}.circuit.json`, "utf8"))
  const cad = circuit.find((e: { type: string }) => e.type === "cad_component")
  const original = await readFile(entry.file, "utf8")
  const preserved = preserveSupplierCad(original, cad)
  await writeFile(entry.file, preserved.tsx)
  entry.sha256 = createHash("sha256").update(preserved.tsx).digest("hex")
  entry.cad = { objUrl: cad.model_obj_url, stepUrl: cad.model_step_url, placement: preserved.placement }
}
await writeFile(manifestPath, JSON.stringify(manifest, null, 2) + "\n")
console.log(`Retained supplier OBJ and STEP references for ${manifest.imports.length} JLCPCB imports.`)