@jefuriiij/synthra 0.1.21 → 0.1.23

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.
@@ -5,15 +5,15 @@ import { Hono } from "hono";
5
5
  // package.json
6
6
  var package_default = {
7
7
  name: "@jefuriiij/synthra",
8
- version: "0.1.21",
8
+ version: "0.1.23",
9
9
  publishConfig: {
10
10
  access: "public"
11
11
  },
12
12
  description: "Local context engine for AI coding assistants \u2014 graph-based context, branch-aware memory, real-time human-activity awareness, deterministic Grep/Glob gating, and a live token dashboard.",
13
13
  type: "module",
14
14
  bin: {
15
- syn: "./bin/syn",
16
- synthra: "./bin/syn"
15
+ syn: "bin/syn",
16
+ synthra: "bin/syn"
17
17
  },
18
18
  scripts: {
19
19
  build: "tsup",
@@ -248,13 +248,18 @@ function summarize(p) {
248
248
  models
249
249
  };
250
250
  }
251
+ function dedupeEnabled() {
252
+ const v = process.env.SYN_DASHBOARD_DEDUPE;
253
+ return v !== "0" && v !== "off" && v !== "false";
254
+ }
251
255
  async function loadProjectFiles(path, name, lastSeen) {
252
256
  const paths = resolvePaths(path);
253
257
  const [rawTokens, gates] = await Promise.all([
254
258
  readJsonl(paths.tokenLog),
255
259
  readJsonl(paths.gateLog)
256
260
  ]);
257
- return { path, name, last_seen: lastSeen, tokens: dedupeTokens(rawTokens), gates };
261
+ const tokens = dedupeEnabled() ? dedupeTokens(rawTokens) : rawTokens;
262
+ return { path, name, last_seen: lastSeen, tokens, gates };
258
263
  }
259
264
  function dedupeTokens(entries) {
260
265
  const score = (model) => {
@@ -1026,7 +1031,7 @@ var public_default = `<!doctype html>
1026
1031
  const el = $('#proj-chart');
1027
1032
  el.innerHTML = '';
1028
1033
  if (!projects.length) {
1029
- el.innerHTML = '<div class="empty">No projects yet.</div>';
1034
+ el.innerHTML = '<div class="empty">No projects yet \u2014 run <code>syn .</code> in a project to start.</div>';
1030
1035
  return;
1031
1036
  }
1032
1037
  const ranked = [...projects].sort((a, b) => (b.total_turns || 0) - (a.total_turns || 0));