@symerian/symi 2.0.12 → 2.0.13

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.12",
3
- "commit": "836b23c66e3fc139ac5c7db44a43adea9ec35b22",
4
- "builtAt": "2026-03-09T16:39:28.949Z"
2
+ "version": "2.0.13",
3
+ "commit": "32c25eda6de685297dbe27f863f49b079ed0dff0",
4
+ "builtAt": "2026-03-09T17:00:11.257Z"
5
5
  }
@@ -1 +1 @@
1
- 2fb661e40a01af0991c00286ee43d4cbc9c8f6b1cc4459500dd5826143402576
1
+ 672cb3c8c92589ea6ad8d66e7e37a211d844d784fc6c1b6f14fbb6200cd487d7
@@ -256,13 +256,16 @@ function renderHistory(messages) {
256
256
  continue;
257
257
  }
258
258
  const hasContent = Array.isArray(m.content)
259
- ? m.content.some((b) => (b.text ?? b.thinking ?? b.name ?? "").trim())
259
+ ? m.content.some((b) => b.type === "text" && (b.text ?? "").trim())
260
260
  : extractText(m.content).trim();
261
261
  if (!hasContent) {
262
262
  continue;
263
263
  }
264
264
 
265
265
  const el = window.renderMessage(m);
266
+ if (!el) {
267
+ continue;
268
+ }
266
269
  responseArea.appendChild(el);
267
270
  window.applyHighlighting(el);
268
271
  }
@@ -748,6 +748,14 @@ window.renderMessage = function (message) {
748
748
  }
749
749
  }
750
750
 
751
+ // If the bubble has no visible content (only copy button), skip it entirely
752
+ const visibleChildren = bubble.querySelectorAll(
753
+ ".msg-text, .msg-image, .msg-thinking, .msg-tool-card, .msg-tool-result",
754
+ );
755
+ if (!isUser && visibleChildren.length === 0) {
756
+ return null;
757
+ }
758
+
751
759
  // Timestamp
752
760
  if (timestamp) {
753
761
  const ts = document.createElement("div");
@@ -3,7 +3,7 @@ import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { Logger } from "tslog";
6
- import json5 from "json5";
6
+ import JSON5 from "json5";
7
7
  import chalk, { Chalk } from "chalk";
8
8
  import fs$1 from "node:fs/promises";
9
9
  import { execFile, execFileSync, spawn } from "node:child_process";
@@ -291,7 +291,7 @@ function readLoggingConfig() {
291
291
  try {
292
292
  if (!fs.existsSync(configPath)) return;
293
293
  const raw = fs.readFileSync(configPath, "utf-8");
294
- const logging = json5.parse(raw)?.logging;
294
+ const logging = JSON5.parse(raw)?.logging;
295
295
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
296
296
  return logging;
297
297
  } catch {
@@ -3063,7 +3063,7 @@ function safeRealpath(target) {
3063
3063
  }
3064
3064
  const defaultResolver = {
3065
3065
  readFile: (p) => fs.readFileSync(p, "utf-8"),
3066
- parseJson: (raw) => json5.parse(raw)
3066
+ parseJson: (raw) => JSON5.parse(raw)
3067
3067
  };
3068
3068
  /**
3069
3069
  * Resolves all $include directives in a parsed config object.
@@ -8346,7 +8346,7 @@ function resolveConfigPathForDeps(deps) {
8346
8346
  function normalizeDeps(overrides = {}) {
8347
8347
  return {
8348
8348
  fs: overrides.fs ?? fs,
8349
- json5: overrides.json5 ?? json5,
8349
+ json5: overrides.json5 ?? JSON5,
8350
8350
  env: overrides.env ?? process.env,
8351
8351
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
8352
8352
  configPath: overrides.configPath ?? "",
@@ -8357,11 +8357,11 @@ function maybeLoadDotEnvForConfig(env) {
8357
8357
  if (env !== process.env) return;
8358
8358
  loadDotEnv({ quiet: true });
8359
8359
  }
8360
- function parseConfigJson5(raw, json5$1 = json5) {
8360
+ function parseConfigJson5(raw, json5 = JSON5) {
8361
8361
  try {
8362
8362
  return {
8363
8363
  ok: true,
8364
- parsed: json5$1.parse(raw)
8364
+ parsed: json5.parse(raw)
8365
8365
  };
8366
8366
  } catch (err) {
8367
8367
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "2.0.12",
3
+ "version": "2.0.13",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",