getprismo 0.1.46 → 0.1.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ # Validation week log (June 12-16, 2026)
2
+
3
+ Paper cuts, observations, and metric notes from the measurement window. Fix bugs; log everything else here instead of changing the product.
4
+
5
+ - 2026-06-12: connector auto-detect was creating a .prismo backup every 5 min when content was unchanged (735 .bak files/day) — fixed in v0.1.46.
6
+ - 2026-06-12: SaaS frontend test harness still emits two warnings during dogfooding: Supabase auth-js probes Node localStorage without a localstorage file, and useWorkspaceData has an existing exhaustive-deps warning. Left as paper cuts during freeze; Recharts mock hoisting warning was fixed in the SaaS repo.
7
+ - 2026-06-12: follow-up dogfood found optimize-report.md still churned backups because the report timestamp changed every auto-detect. Fixed by comparing optimize reports with the generated-at line normalized and added a repeated-run regression test.
8
+ - 2026-06-12: follow-up dogfood found backend-summary.md could churn backups because generated .prismo context files influenced load-bearing text-reference counts. Excluded .prismo generated context from the reference corpus and added a regression test; repeated optimize on the SaaS repo now produces 0 new .bak files after the one-time old-report replacement.
@@ -282,7 +282,12 @@ function formatGitActivity(activity) {
282
282
  }
283
283
 
284
284
  function topLoadBearing(root, files, allFiles, gitActivity, limit = 8) {
285
- const textFiles = (allFiles || []).filter((file) => !file.ignored && file.kind !== "binary" && /\.(py|tsx?|jsx?|mjs|cjs|vue|svelte)$/.test(file.path));
285
+ const textFiles = (allFiles || []).filter((file) =>
286
+ !file.ignored &&
287
+ file.kind !== "binary" &&
288
+ !file.path.replace(/\\/g, "/").startsWith(".prismo/") &&
289
+ /\.(py|tsx?|jsx?|mjs|cjs|vue|svelte)$/.test(file.path)
290
+ );
286
291
  const sourcePaths = new Set(textFiles.map((file) => file.path));
287
292
  const pythonModuleToPath = new Map();
288
293
  for (const file of textFiles.filter((candidate) => candidate.path.endsWith(".py"))) {
@@ -393,6 +393,23 @@ function renderOptimizeReport(ctx, generatedFiles) {
393
393
  ].join("\n");
394
394
  }
395
395
 
396
+ function normalizeOptimizeReportForCompare(contents) {
397
+ return contents.replace(/^- Generated at: .+$/m, "- Generated at: <timestamp>");
398
+ }
399
+
400
+ function writeOptimizeReport(root, relPath, contents) {
401
+ const fullPath = path.join(root, relPath);
402
+ try {
403
+ if (
404
+ fs.existsSync(fullPath) &&
405
+ normalizeOptimizeReportForCompare(fs.readFileSync(fullPath, "utf8")) === normalizeOptimizeReportForCompare(contents)
406
+ ) {
407
+ return { path: relPath, backupPath: null, unchanged: true };
408
+ }
409
+ } catch {}
410
+ return writeGeneratedFile(root, relPath, contents);
411
+ }
412
+
396
413
  function renderScopedContext(ctx, scope) {
397
414
  const scopeLower = scope.toLowerCase();
398
415
  const relevant = ctx.scan.files
@@ -530,7 +547,7 @@ function runOptimize(rootDir = process.cwd(), options = {}) {
530
547
  generated.push(written.path);
531
548
  }
532
549
  const report = renderOptimizeReport(ctx, [...generated, ".prismo/optimize-report.md"]);
533
- const writtenReport = writeGeneratedFile(ctx.root, path.join(".prismo", "optimize-report.md"), report);
550
+ const writtenReport = writeOptimizeReport(ctx.root, path.join(".prismo", "optimize-report.md"), report);
534
551
  generated.push(writtenReport.path);
535
552
 
536
553
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "getprismo",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "description": "Local AI coding workflow scanner for Codex, Claude Code, Cursor, and token-waste diagnostics.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/shanirsh/prismodev#readme",