omnius 1.0.684 → 1.0.685

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.
package/dist/index.js CHANGED
@@ -102981,8 +102981,8 @@ var init_safe_python = __esm({
102981
102981
  if (!math.unsupported) {
102982
102982
  return { success: false, output: "", error: `math error: ${math.error}`, durationMs: dur() };
102983
102983
  }
102984
- const disabled = process.env["OMNIUS_DISABLE_SANDBOXED_PYTHON"] === "1";
102985
- if (!this.allowSandboxed || disabled) {
102984
+ const disabled2 = process.env["OMNIUS_DISABLE_SANDBOXED_PYTHON"] === "1";
102985
+ if (!this.allowSandboxed || disabled2) {
102986
102986
  return {
102987
102987
  success: false,
102988
102988
  output: "",
@@ -697287,7 +697287,7 @@ import {
697287
697287
  import { fileURLToPath as fileURLToPath24 } from "node:url";
697288
697288
  import { join as join143 } from "node:path";
697289
697289
  function startIdleMemoryMaintenance(options2) {
697290
- const disabled = process.env["OMNIUS_DISABLE_IDLE_MEMORY_MAINTENANCE"] === "1";
697290
+ const disabled2 = process.env["OMNIUS_DISABLE_IDLE_MEMORY_MAINTENANCE"] === "1";
697291
697291
  let lastActivity = Date.now();
697292
697292
  let worker2 = null;
697293
697293
  let cancelledRunId = null;
@@ -697355,7 +697355,7 @@ function startIdleMemoryMaintenance(options2) {
697355
697355
  }
697356
697356
  };
697357
697357
  const maybeStart = () => {
697358
- if (disabled || worker2) return;
697358
+ if (disabled2 || worker2) return;
697359
697359
  if (options2.isBusy()) {
697360
697360
  lastActivity = Date.now();
697361
697361
  stopWorker();
@@ -697374,7 +697374,7 @@ function startIdleMemoryMaintenance(options2) {
697374
697374
  if (options2.isBusy()) stopWorker();
697375
697375
  },
697376
697376
  triggerAfterTask() {
697377
- if (disabled) return;
697377
+ if (disabled2) return;
697378
697378
  markDirty(options2.repoRoot);
697379
697379
  lastActivity = Date.now();
697380
697380
  },
@@ -700101,8 +700101,8 @@ function defaultConsensusModel(primaryModel) {
700101
700101
  return "base";
700102
700102
  }
700103
700103
  function resolveAsrConsensusModel(primaryModel) {
700104
- const disabled = String(process.env["OMNIUS_ASR_DISABLE_CONSENSUS"] ?? "").trim().toLowerCase();
700105
- if (disabled === "1" || disabled === "true" || disabled === "yes" || disabled === "on") {
700104
+ const disabled2 = String(process.env["OMNIUS_ASR_DISABLE_CONSENSUS"] ?? "").trim().toLowerCase();
700105
+ if (disabled2 === "1" || disabled2 === "true" || disabled2 === "yes" || disabled2 === "on") {
700106
700106
  return "off";
700107
700107
  }
700108
700108
  const consensusEnv = String(
@@ -710771,6 +710771,12 @@ var init_command_registry = __esm({
710771
710771
  ["/endpoint <url> --auth <t>", "Set endpoint with Bearer auth"],
710772
710772
  ["/config", "Show current configuration"],
710773
710773
  ["/color", "Show or configure terminal colors/theme"],
710774
+ ["/color status", "Show TUI chrome effect settings"],
710775
+ ["/color frill on|off|toggle|status", "Control ornamental TUI button ends"],
710776
+ [
710777
+ "/color flow on|off|toggle|status",
710778
+ "Control animated and gradient-flowing box borders"
710779
+ ],
710774
710780
  ["/theme", "Alias for /color"],
710775
710781
  ["/setup", "Run the initial setup wizard again"],
710776
710782
  ["/wizard", "Alias for /setup"],
@@ -714213,6 +714219,78 @@ var init_terminal_links = __esm({
714213
714219
  }
714214
714220
  });
714215
714221
 
714222
+ // packages/cli/src/tui/terminal-capabilities.ts
714223
+ function enabled2(value2) {
714224
+ return /^(?:1|true|yes|on)$/i.test(value2?.trim() ?? "");
714225
+ }
714226
+ function disabled(value2) {
714227
+ return /^(?:0|false|no|off)$/i.test(value2?.trim() ?? "");
714228
+ }
714229
+ function isLimitedTerminal(env2) {
714230
+ const term = (env2["TERM"] ?? "").trim().toLowerCase();
714231
+ return /^(?:dumb|linux|cons25|vt100|ansi|unknown)$/.test(term);
714232
+ }
714233
+ function profileEffect(env2) {
714234
+ const profile = (env2["OMNIUS_TUI_PROFILE"] ?? "").trim().toLowerCase();
714235
+ if (profile === "full") return true;
714236
+ if (profile === "compatible" || profile === "static") return false;
714237
+ return void 0;
714238
+ }
714239
+ function environmentEffect(value2) {
714240
+ if (enabled2(value2)) return true;
714241
+ if (disabled(value2)) return false;
714242
+ return void 0;
714243
+ }
714244
+ function getTuiChromeEffects() {
714245
+ return { ..._effects };
714246
+ }
714247
+ function setTuiChromeEffects(patch) {
714248
+ if (typeof patch.buttonFrill === "boolean") {
714249
+ _effects.buttonFrill = patch.buttonFrill;
714250
+ }
714251
+ if (typeof patch.boxColorFlow === "boolean") {
714252
+ _effects.boxColorFlow = patch.boxColorFlow;
714253
+ }
714254
+ return getTuiChromeEffects();
714255
+ }
714256
+ function resolvedEffect(kind, options2) {
714257
+ if (typeof options2[kind] === "boolean") return options2[kind];
714258
+ const env2 = options2.env ?? process.env;
714259
+ const specific = environmentEffect(
714260
+ env2[kind === "buttonFrill" ? "OMNIUS_TUI_BUTTON_FRILL" : "OMNIUS_TUI_BOX_COLOR_FLOW"]
714261
+ );
714262
+ if (specific !== void 0) return specific;
714263
+ if (kind === "boxColorFlow") {
714264
+ if (enabled2(env2["OMNIUS_TUI_STATIC_CHROME"])) return false;
714265
+ if (enabled2(env2["OMNIUS_TUI_ANIMATED_CHROME"])) return true;
714266
+ }
714267
+ return profileEffect(env2) ?? _effects[kind];
714268
+ }
714269
+ function prefersStaticTuiChrome(options2 = {}) {
714270
+ const env2 = options2.env ?? process.env;
714271
+ if (!resolvedEffect("boxColorFlow", options2)) return true;
714272
+ if (isLimitedTerminal(env2)) return true;
714273
+ return false;
714274
+ }
714275
+ function supportsOrnamentalTuiButtonEdges(options2 = {}) {
714276
+ const env2 = options2.env ?? process.env;
714277
+ if (!resolvedEffect("buttonFrill", options2) || isLimitedTerminal(env2)) {
714278
+ return false;
714279
+ }
714280
+ const locale = (env2["LC_ALL"] || env2["LC_CTYPE"] || env2["LANG"] || "").trim();
714281
+ if (locale && !/utf-?8/i.test(locale)) return false;
714282
+ return true;
714283
+ }
714284
+ var _effects;
714285
+ var init_terminal_capabilities = __esm({
714286
+ "packages/cli/src/tui/terminal-capabilities.ts"() {
714287
+ _effects = {
714288
+ buttonFrill: false,
714289
+ boxColorFlow: false
714290
+ };
714291
+ }
714292
+ });
714293
+
714216
714294
  // packages/cli/src/tui/render.ts
714217
714295
  function stdoutIsTTY() {
714218
714296
  return process.stdout.isTTY ?? false;
@@ -714462,7 +714540,9 @@ function xterm256ToRgb(idx) {
714462
714540
  }
714463
714541
  function toolGradSeq(colorCode, frac) {
714464
714542
  if (!_colorsEnabled || !stdoutIsTTY()) return "";
714465
- if (!truecolorOk()) return toolColorSeq(colorCode);
714543
+ if (!truecolorOk() || prefersStaticTuiChrome()) {
714544
+ return toolColorSeq(colorCode);
714545
+ }
714466
714546
  const [r2, g, b] = xterm256ToRgb(colorCode);
714467
714547
  const f2 = Math.max(0, Math.min(1, frac));
714468
714548
  const scale = 0.78 + 0.36 * f2;
@@ -714471,7 +714551,7 @@ function toolGradSeq(colorCode, frac) {
714471
714551
  }
714472
714552
  function paintToolBorder(glyphs, startCol, totalWidth, colorCode) {
714473
714553
  if (glyphs.length === 0) return "";
714474
- if (!_colorsEnabled || !stdoutIsTTY() || !truecolorOk()) {
714554
+ if (!_colorsEnabled || !stdoutIsTTY() || !truecolorOk() || prefersStaticTuiChrome()) {
714475
714555
  return `${toolColorSeq(colorCode)}${glyphs}`;
714476
714556
  }
714477
714557
  const SEG = 6;
@@ -716027,6 +716107,7 @@ var init_render = __esm({
716027
716107
  init_tool_collapse_store();
716028
716108
  init_internal_output();
716029
716109
  init_terminal_links();
716110
+ init_terminal_capabilities();
716030
716111
  c3 = {
716031
716112
  bold: (t2) => ansi2("1", t2),
716032
716113
  dim: (t2) => stdoutIsTTY() ? `${dimFg()}${t2}\x1B[0m` : t2,
@@ -724847,42 +724928,6 @@ var init_dist9 = __esm({
724847
724928
  }
724848
724929
  });
724849
724930
 
724850
- // packages/cli/src/tui/terminal-capabilities.ts
724851
- function enabled2(value2) {
724852
- return /^(?:1|true|yes|on)$/i.test(value2?.trim() ?? "");
724853
- }
724854
- function isLimitedTerminal(env2) {
724855
- const term = (env2["TERM"] ?? "").trim().toLowerCase();
724856
- return /^(?:dumb|linux|cons25|vt100|ansi|unknown)$/.test(term);
724857
- }
724858
- function requestsCompatibleChrome(env2) {
724859
- const profile = (env2["OMNIUS_TUI_PROFILE"] ?? "").trim().toLowerCase();
724860
- const client = (env2["OMNIUS_TUI_CLIENT_PLATFORM"] ?? "").trim().toLowerCase();
724861
- return profile === "compatible" || profile === "static" || enabled2(env2["OMNIUS_TUI_STATIC_CHROME"]) || client === "darwin" || client === "macos" || client === "win32" || client === "windows";
724862
- }
724863
- function prefersStaticTuiChrome(options2 = {}) {
724864
- const platform13 = options2.platform ?? process.platform;
724865
- const env2 = options2.env ?? process.env;
724866
- if (platform13 === "darwin" || platform13 === "win32") return true;
724867
- if (requestsCompatibleChrome(env2)) return true;
724868
- if (enabled2(env2["OMNIUS_TUI_ANIMATED_CHROME"])) return false;
724869
- if (isLimitedTerminal(env2)) return true;
724870
- return false;
724871
- }
724872
- function supportsOrnamentalTuiButtonEdges(options2 = {}) {
724873
- const platform13 = options2.platform ?? process.platform;
724874
- const env2 = options2.env ?? process.env;
724875
- if (platform13 === "darwin" || platform13 === "win32") return false;
724876
- if (requestsCompatibleChrome(env2) || isLimitedTerminal(env2)) return false;
724877
- const locale = (env2["LC_ALL"] || env2["LC_CTYPE"] || env2["LANG"] || "").trim();
724878
- if (locale && !/utf-?8/i.test(locale)) return false;
724879
- return true;
724880
- }
724881
- var init_terminal_capabilities = __esm({
724882
- "packages/cli/src/tui/terminal-capabilities.ts"() {
724883
- }
724884
- });
724885
-
724886
724931
  // packages/cli/src/tui/stageIndicator.ts
724887
724932
  function stageForToolName(toolName) {
724888
724933
  const name10 = String(toolName ?? "").trim().toLowerCase();
@@ -732329,7 +732374,7 @@ ${CONTENT_BG_SEQ}`);
732329
732374
  const reserved = clampGradientWidth(
732330
732375
  Math.max(12, Math.min(needed, maxWidth))
732331
732376
  );
732332
- const truecolor = supportsTruecolor();
732377
+ const truecolor = supportsAnimatedTuiChrome();
732333
732378
  const block = renderStageBlock(
732334
732379
  stage2,
732335
732380
  detail,
@@ -752892,6 +752937,41 @@ async function handleSlashCommand(input, ctx3) {
752892
752937
  case "colors":
752893
752938
  case "theme": {
752894
752939
  const colorAction = arg.toLowerCase();
752940
+ const colorParts = colorAction.split(/\s+/).filter(Boolean);
752941
+ const effectName = colorParts[0];
752942
+ const effectKey = effectName === "frill" || effectName === "button-frill" ? "buttonFrill" : effectName === "flow" || effectName === "box-flow" ? "boxColorFlow" : null;
752943
+ if (effectName === "effects" || effectName === "status") {
752944
+ const effects = getTuiChromeEffects();
752945
+ renderInfo(
752946
+ `TUI chrome: button frill ${effects.buttonFrill ? "on" : "off"}; box color flow ${effects.boxColorFlow ? "on" : "off"}.`
752947
+ );
752948
+ return "handled";
752949
+ }
752950
+ if (effectKey) {
752951
+ const action = colorParts[1] ?? "toggle";
752952
+ const current = getTuiChromeEffects()[effectKey];
752953
+ if (action === "status") {
752954
+ renderInfo(
752955
+ `${effectKey === "buttonFrill" ? "Button frill" : "Box color flow"}: ${current ? "on" : "off"}.`
752956
+ );
752957
+ return "handled";
752958
+ }
752959
+ if (!["toggle", "on", "off", "enable", "disable"].includes(action)) {
752960
+ renderWarning(
752961
+ `Usage: /color ${effectKey === "buttonFrill" ? "frill" : "flow"} on|off|toggle|status`
752962
+ );
752963
+ return "handled";
752964
+ }
752965
+ const next = action === "on" || action === "enable" ? true : action === "off" || action === "disable" ? false : !current;
752966
+ setTuiChromeEffects({ [effectKey]: next });
752967
+ const save3 = hasLocal ? ctx3.saveLocalSettings.bind(ctx3) : ctx3.saveSettings.bind(ctx3);
752968
+ save3({ [effectKey]: next });
752969
+ await refreshColorSurfaces(ctx3, false);
752970
+ renderInfo(
752971
+ `${effectKey === "buttonFrill" ? "Button frill" : "Box color flow"}: ${next ? "on" : "off"}.${hasLocal ? " (project-local)" : ""}`
752972
+ );
752973
+ return "handled";
752974
+ }
752895
752975
  if (cmd !== "theme" && ["toggle", "on", "off", "enable", "disable"].includes(colorAction)) {
752896
752976
  const current = ctx3.getColors?.() ?? true;
752897
752977
  const next = colorAction === "on" || colorAction === "enable" ? true : colorAction === "off" || colorAction === "disable" ? false : !current;
@@ -752905,14 +752985,7 @@ async function handleSlashCommand(input, ctx3) {
752905
752985
  }
752906
752986
  if (["system", "branding", "custom"].includes(colorAction)) {
752907
752987
  setThemeMode(colorAction);
752908
- refreshThemeVars();
752909
- try {
752910
- const tasksRenderer = await Promise.resolve().then(() => (init_tui_tasks_renderer(), tui_tasks_renderer_exports));
752911
- tasksRenderer.refreshTuiTasksThemeVars?.();
752912
- tasksRenderer.refreshTuiTasks?.();
752913
- } catch {
752914
- }
752915
- ctx3.refreshBanner?.();
752988
+ await refreshColorSurfaces(ctx3, true);
752916
752989
  const settings = { colorTheme: colorAction };
752917
752990
  const save3 = hasLocal ? ctx3.saveLocalSettings.bind(ctx3) : ctx3.saveSettings.bind(ctx3);
752918
752991
  save3(settings);
@@ -752921,7 +752994,7 @@ async function handleSlashCommand(input, ctx3) {
752921
752994
  );
752922
752995
  return "handled";
752923
752996
  }
752924
- await showColorMenu(ctx3);
752997
+ await showColorMenu(ctx3, hasLocal);
752925
752998
  return "handled";
752926
752999
  }
752927
753000
  case "apikey":
@@ -758900,8 +758973,20 @@ async function restoreNamedSession(ctx3, query) {
758900
758973
  ctx3.clearScreen();
758901
758974
  await replaySession(ctx3, session.id);
758902
758975
  }
758903
- async function showColorMenu(ctx3) {
758976
+ async function refreshColorSurfaces(ctx3, themeChanged) {
758977
+ if (themeChanged) refreshThemeVars();
758978
+ try {
758979
+ const tasksRenderer = await Promise.resolve().then(() => (init_tui_tasks_renderer(), tui_tasks_renderer_exports));
758980
+ if (themeChanged) tasksRenderer.refreshTuiTasksThemeVars?.();
758981
+ tasksRenderer.refreshTuiTasks?.();
758982
+ } catch {
758983
+ }
758984
+ ctx3.refreshBanner?.();
758985
+ ctx3.refreshDisplay?.();
758986
+ }
758987
+ async function showColorMenu(ctx3, hasLocal = false) {
758904
758988
  const currentConfig = getThemeConfig();
758989
+ const effects = getTuiChromeEffects();
758905
758990
  const items = [
758906
758991
  {
758907
758992
  key: "system",
@@ -758917,29 +759002,40 @@ async function showColorMenu(ctx3) {
758917
759002
  key: "custom",
758918
759003
  label: `Custom${currentConfig.mode === "custom" ? " (active)" : ""}`,
758919
759004
  detail: "User-defined overrides"
759005
+ },
759006
+ {
759007
+ key: "__button_frill__",
759008
+ label: `Button frill: ${effects.buttonFrill ? "on" : "off"}`,
759009
+ detail: "Toggle ornamental Unicode button ends"
759010
+ },
759011
+ {
759012
+ key: "__box_color_flow__",
759013
+ label: `Box color flow: ${effects.boxColorFlow ? "on" : "off"}`,
759014
+ detail: "Toggle animated and gradient-flowing box borders"
758920
759015
  }
758921
759016
  ];
758922
759017
  const result = await tuiSelect({
758923
759018
  items,
758924
- title: "Color Theme"
759019
+ title: "Color and Chrome"
758925
759020
  });
758926
759021
  if (!result || result.key === "cancel") return;
758927
- setThemeMode(result.key);
758928
- refreshThemeVars();
758929
- try {
758930
- const tasksRenderer = await Promise.resolve().then(() => (init_tui_tasks_renderer(), tui_tasks_renderer_exports));
758931
- tasksRenderer.refreshTuiTasksThemeVars?.();
758932
- tasksRenderer.refreshTuiTasks?.();
758933
- } catch {
759022
+ if (result.key === "__button_frill__" || result.key === "__box_color_flow__") {
759023
+ const effectKey = result.key === "__button_frill__" ? "buttonFrill" : "boxColorFlow";
759024
+ const next = !getTuiChromeEffects()[effectKey];
759025
+ setTuiChromeEffects({ [effectKey]: next });
759026
+ const save4 = hasLocal ? ctx3.saveLocalSettings.bind(ctx3) : ctx3.saveSettings.bind(ctx3);
759027
+ save4({ [effectKey]: next });
759028
+ await refreshColorSurfaces(ctx3, false);
759029
+ renderInfo(
759030
+ `${effectKey === "buttonFrill" ? "Button frill" : "Box color flow"}: ${next ? "on" : "off"}.${hasLocal ? " (project-local)" : ""}`
759031
+ );
759032
+ return;
758934
759033
  }
758935
- ctx3.refreshBanner?.();
759034
+ setThemeMode(result.key);
759035
+ await refreshColorSurfaces(ctx3, true);
758936
759036
  renderInfo(`Theme set to: ${result.key}`);
758937
- try {
758938
- const settings = loadGlobalSettings();
758939
- settings.colorTheme = result.key;
758940
- saveGlobalSettings(settings);
758941
- } catch {
758942
- }
759037
+ const save3 = hasLocal ? ctx3.saveLocalSettings.bind(ctx3) : ctx3.saveSettings.bind(ctx3);
759038
+ save3({ colorTheme: result.key });
758943
759039
  }
758944
759040
  async function showConfigEditor(ctx3) {
758945
759041
  const merged = {
@@ -768826,6 +768922,7 @@ var init_commands = __esm({
768826
768922
  init_updater();
768827
768923
  init_omnius_directory();
768828
768924
  init_theme();
768925
+ init_terminal_capabilities();
768829
768926
  init_status_bar();
768830
768927
  init_layout2();
768831
768928
  init_setup();
@@ -821311,6 +821408,10 @@ async function startInteractive(config, repoPath2) {
821311
821408
  setEmojisEnabled(savedSettings.emojis);
821312
821409
  if (savedSettings.colors !== void 0)
821313
821410
  setColorsEnabled(savedSettings.colors);
821411
+ setTuiChromeEffects({
821412
+ buttonFrill: savedSettings.buttonFrill === true,
821413
+ boxColorFlow: savedSettings.boxColorFlow === true
821414
+ });
821314
821415
  if (savedSettings.colorTheme) {
821315
821416
  try {
821316
821417
  const { setThemeMode: setThemeMode2 } = await Promise.resolve().then(() => (init_theme(), theme_exports));
@@ -827920,6 +828021,7 @@ var init_interactive = __esm({
827920
828021
  init_omnius_directory();
827921
828022
  init_render();
827922
828023
  init_internal_output();
828024
+ init_terminal_capabilities();
827923
828025
  init_task_complete_box();
827924
828026
  init_audio_waveform();
827925
828027
  init_carousel();
@@ -863994,7 +864096,7 @@ function removeCronByDirectory(dir) {
863994
864096
  return 0;
863995
864097
  }
863996
864098
  function disableAllOmniusTimers() {
863997
- let disabled = 0;
864099
+ let disabled2 = 0;
863998
864100
  try {
863999
864101
  const { execSync: es } = require4("node:child_process");
864000
864102
  const home3 = process.env.HOME || require4("node:os").homedir();
@@ -864011,7 +864113,7 @@ function disableAllOmniusTimers() {
864011
864113
  }
864012
864114
  try {
864013
864115
  userServiceAction(`${t2.name}.timer`, "disable");
864014
- disabled++;
864116
+ disabled2++;
864015
864117
  } catch {
864016
864118
  }
864017
864119
  try {
@@ -864031,7 +864133,7 @@ function disableAllOmniusTimers() {
864031
864133
  }
864032
864134
  } catch {
864033
864135
  }
864034
- return disabled;
864136
+ return disabled2;
864035
864137
  }
864036
864138
  function removeAllOmniusCrons() {
864037
864139
  try {
@@ -20245,7 +20245,10 @@
20245
20245
  "keywords": [
20246
20246
  "command",
20247
20247
  "ui",
20248
- "color"
20248
+ "color",
20249
+ "status",
20250
+ "frill",
20251
+ "flow"
20249
20252
  ],
20250
20253
  "maturity": "stable",
20251
20254
  "layer": "interface",
@@ -20284,12 +20287,28 @@
20284
20287
  "signature": "/color",
20285
20288
  "description": "Show or configure terminal colors/theme"
20286
20289
  },
20290
+ {
20291
+ "signature": "/color status",
20292
+ "description": "Show TUI chrome effect settings"
20293
+ },
20294
+ {
20295
+ "signature": "/color frill on|off|toggle|status",
20296
+ "description": "Control ornamental TUI button ends"
20297
+ },
20298
+ {
20299
+ "signature": "/color flow on|off|toggle|status",
20300
+ "description": "Control animated and gradient-flowing box borders"
20301
+ },
20287
20302
  {
20288
20303
  "signature": "/theme",
20289
20304
  "description": "Alias for /color"
20290
20305
  }
20291
20306
  ],
20292
- "subcommands": [],
20307
+ "subcommands": [
20308
+ "status",
20309
+ "frill",
20310
+ "flow"
20311
+ ],
20293
20312
  "implementation_status": "implemented",
20294
20313
  "surfaces": {
20295
20314
  "tui": true,
@@ -27,9 +27,9 @@ The input box should preserve Unicode line boundaries and avoid overwriting prev
27
27
 
28
28
  ## Terminal Compatibility
29
29
 
30
- Header controls retain ornamental Unicode edges on capable Linux terminals. macOS, Windows, limited terminals, and compatible-profile sessions use background-filled square padding so missing Symbols for Legacy Computing glyphs cannot become replacement boxes.
30
+ Header controls use background-filled square padding by default. Run `/color frill on` to enable ornamental Unicode ends when the terminal font includes Symbols for Legacy Computing glyphs.
31
31
 
32
- Animated border colors are disabled on macOS, Windows, limited terminals, and explicit compatible-profile sessions. SSH alone does not disable Linux rendering because the host cannot reliably infer the client system or font. Set `OMNIUS_TUI_PROFILE=compatible` or `OMNIUS_TUI_STATIC_CHROME=1` for a limited SSH client. An SSH launcher can instead forward `OMNIUS_TUI_CLIENT_PLATFORM=macos` or `windows`.
32
+ Box-border color animation and gradient flow are disabled by default. Run `/color flow on` to enable them. `/color`, `/color status`, `/color frill status`, and `/color flow status` expose the current state. Both preferences persist in project/global Omnius settings, and `--local` stores only the current project override.
33
33
 
34
34
  ## Shell Output
35
35
 
@@ -1937,11 +1937,14 @@ Show or configure terminal colors/theme
1937
1937
  | Safety | none |
1938
1938
  | Aliases | /colors, /theme |
1939
1939
  | Args | - |
1940
- | Subcommands | - |
1940
+ | Subcommands | status, frill, flow |
1941
1941
 
1942
1942
  Signatures:
1943
1943
 
1944
1944
  - `/color` - Show or configure terminal colors/theme
1945
+ - `/color status` - Show TUI chrome effect settings
1946
+ - `/color frill on\|off\|toggle\|status` - Control ornamental TUI button ends
1947
+ - `/color flow on\|off\|toggle\|status` - Control animated and gradient-flowing box borders
1945
1948
  - `/theme` - Alias for /color
1946
1949
 
1947
1950
  ### /emojis
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.684",
3
+ "version": "1.0.685",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.684",
9
+ "version": "1.0.685",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -1053,6 +1053,72 @@
1053
1053
  "uint8arrays": "^5.1.0"
1054
1054
  }
1055
1055
  },
1056
+ "node_modules/@libp2p/noise": {
1057
+ "version": "17.0.2",
1058
+ "resolved": "https://registry.npmjs.org/@libp2p/noise/-/noise-17.0.2.tgz",
1059
+ "integrity": "sha512-FY83yQf4/aqqiJHY6XB5aO7vtst6mMoy0r/vGsnTaosaYQ6g9xwkNbTq/juzTXjRbz9pBVkp62zXKJrXmm9G3w==",
1060
+ "license": "Apache-2.0 OR MIT",
1061
+ "dependencies": {
1062
+ "@chainsafe/as-chacha20poly1305": "^0.1.0",
1063
+ "@chainsafe/as-sha256": "^1.2.0",
1064
+ "@libp2p/crypto": "^5.1.23",
1065
+ "@libp2p/interface": "^3.3.0",
1066
+ "@libp2p/peer-id": "^6.0.15",
1067
+ "@libp2p/utils": "^7.4.1",
1068
+ "@noble/ciphers": "^2.0.1",
1069
+ "@noble/curves": "^2.0.1",
1070
+ "@noble/hashes": "^2.0.1",
1071
+ "protons-runtime": "^7.0.0",
1072
+ "uint8arraylist": "^3.0.2",
1073
+ "uint8arrays": "^6.1.1",
1074
+ "wherearewe": "^2.0.1"
1075
+ }
1076
+ },
1077
+ "node_modules/@libp2p/noise/node_modules/multiformats": {
1078
+ "version": "14.0.5",
1079
+ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-14.0.5.tgz",
1080
+ "integrity": "sha512-vbIm83F2yZ1pWJGS0yl0ysracIvv56LtbrIyiIQHoLdYDJOMoLfVFsXhh9DUH4SFdkdkFhucyWniihsNzVEjkQ==",
1081
+ "license": "Apache-2.0 OR MIT"
1082
+ },
1083
+ "node_modules/@libp2p/noise/node_modules/protons-runtime": {
1084
+ "version": "7.0.0",
1085
+ "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-7.0.0.tgz",
1086
+ "integrity": "sha512-r/e72006xoVND4Uvf1aIs4OQOkJaASBU3ip4DzOWAktoKAkTiOYqKoS3TYMBm8HnnYU8+h0uEzr5gIRwk/pmTg==",
1087
+ "license": "Apache-2.0 OR MIT",
1088
+ "dependencies": {
1089
+ "uint8-varint": "^3.0.0",
1090
+ "uint8arraylist": "^3.0.0",
1091
+ "uint8arrays": "^6.0.0"
1092
+ }
1093
+ },
1094
+ "node_modules/@libp2p/noise/node_modules/uint8-varint": {
1095
+ "version": "3.0.0",
1096
+ "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-3.0.0.tgz",
1097
+ "integrity": "sha512-S4DdpXBaLwKcFo7f0bWzWfHjbZ/i3QhM842qn+ZvHjxqFCfUcEB9SQNcmI69S+zMlcmIcKxsk9Iyw77S2Kxv6Q==",
1098
+ "license": "Apache-2.0 OR MIT",
1099
+ "dependencies": {
1100
+ "uint8arraylist": "^3.0.1",
1101
+ "uint8arrays": "^6.1.0"
1102
+ }
1103
+ },
1104
+ "node_modules/@libp2p/noise/node_modules/uint8arraylist": {
1105
+ "version": "3.0.2",
1106
+ "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-3.0.2.tgz",
1107
+ "integrity": "sha512-LDVoq9BQaGJzGDUovEnoX6rpKCvnY/Jbtws4ikwnBzjRbq5qBAFpBZevUEbSmMM87aO0Sp+wOZy2ZXf5yODmXQ==",
1108
+ "license": "Apache-2.0 OR MIT",
1109
+ "dependencies": {
1110
+ "uint8arrays": "^6.0.0"
1111
+ }
1112
+ },
1113
+ "node_modules/@libp2p/noise/node_modules/uint8arrays": {
1114
+ "version": "6.1.1",
1115
+ "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-6.1.1.tgz",
1116
+ "integrity": "sha512-iz7JN0XCSZYA111lhFG2Ui9EhFvTNekqSRHw3lvMHq+dzwWy1OQftxFQREEh4rffU0oSoXdQHsk2TiHKVm4fsA==",
1117
+ "license": "Apache-2.0 OR MIT",
1118
+ "dependencies": {
1119
+ "multiformats": "^14.0.0"
1120
+ }
1121
+ },
1056
1122
  "node_modules/@libp2p/peer-collections": {
1057
1123
  "version": "7.0.13",
1058
1124
  "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-7.0.13.tgz",
@@ -1359,17 +1425,17 @@
1359
1425
  }
1360
1426
  },
1361
1427
  "node_modules/@libp2p/webrtc": {
1362
- "version": "6.0.31",
1363
- "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-6.0.31.tgz",
1364
- "integrity": "sha512-LUv8264U2TyKNrPBuFKg1euOJytUmpNuBWmJxLnNKbMGqB59i6bdmw8GzoblY6gf2XI0FghyZcH8Q0zxlOud0g==",
1428
+ "version": "6.0.32",
1429
+ "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-6.0.32.tgz",
1430
+ "integrity": "sha512-XJTKNlsVh6v0LqbvBUFQqlwxHEQRA8KW8W2aLEZrjf8NtIww6BYozsaYVe+0W6ujjZWHjTkVjUwPgVqbIPzNFA==",
1365
1431
  "license": "Apache-2.0 OR MIT",
1366
1432
  "dependencies": {
1367
1433
  "@chainsafe/is-ip": "^2.1.0",
1368
- "@chainsafe/libp2p-noise": "^17.0.0",
1369
1434
  "@libp2p/crypto": "^5.1.23",
1370
1435
  "@libp2p/interface": "^3.3.0",
1371
1436
  "@libp2p/interface-internal": "^3.1.13",
1372
1437
  "@libp2p/keychain": "^6.1.7",
1438
+ "@libp2p/noise": "^17.0.2",
1373
1439
  "@libp2p/peer-id": "^6.0.15",
1374
1440
  "@libp2p/utils": "^7.4.1",
1375
1441
  "@multiformats/multiaddr": "^13.0.3",
@@ -2759,9 +2825,9 @@
2759
2825
  }
2760
2826
  },
2761
2827
  "node_modules/bare-url": {
2762
- "version": "2.5.3",
2763
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.5.3.tgz",
2764
- "integrity": "sha512-3absfEzoyFosWT8v83ZcJgbTJxv+S/sI7jBfeCMlUVatSaefRmwweqBhFpMllQv+HTxs/FbbToVOw1c05NORkQ==",
2828
+ "version": "2.5.4",
2829
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.5.4.tgz",
2830
+ "integrity": "sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==",
2765
2831
  "license": "Apache-2.0",
2766
2832
  "optional": true,
2767
2833
  "dependencies": {
@@ -3769,9 +3835,9 @@
3769
3835
  }
3770
3836
  },
3771
3837
  "node_modules/fast-uri": {
3772
- "version": "3.1.6",
3773
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.6.tgz",
3774
- "integrity": "sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==",
3838
+ "version": "3.1.7",
3839
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz",
3840
+ "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==",
3775
3841
  "funding": [
3776
3842
  {
3777
3843
  "type": "github",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.684",
3
+ "version": "1.0.685",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/library.js",