@oh-my-pi/pi-tui 18.4.6 → 18.4.8

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.
Files changed (112) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/types/native/backend.d.ts +3 -2
  3. package/dist/types/theme/defaults/index.d.ts +700 -0
  4. package/dist/types/theme/schema.d.ts +18 -0
  5. package/package.json +9 -9
  6. package/src/native/backend.ts +44 -7
  7. package/src/theme/dark.json +10 -0
  8. package/src/theme/defaults/alabaster.json +10 -0
  9. package/src/theme/defaults/amethyst.json +10 -0
  10. package/src/theme/defaults/anthracite.json +10 -0
  11. package/src/theme/defaults/basalt.json +10 -0
  12. package/src/theme/defaults/birch.json +10 -0
  13. package/src/theme/defaults/dark-abyss.json +10 -0
  14. package/src/theme/defaults/dark-arctic.json +10 -0
  15. package/src/theme/defaults/dark-aurora.json +10 -0
  16. package/src/theme/defaults/dark-catppuccin.json +10 -0
  17. package/src/theme/defaults/dark-cavern.json +10 -0
  18. package/src/theme/defaults/dark-celestial.json +10 -0
  19. package/src/theme/defaults/dark-copper.json +10 -0
  20. package/src/theme/defaults/dark-cosmos.json +10 -0
  21. package/src/theme/defaults/dark-cyberpunk.json +10 -0
  22. package/src/theme/defaults/dark-dracula.json +10 -0
  23. package/src/theme/defaults/dark-eclipse.json +10 -0
  24. package/src/theme/defaults/dark-ember.json +10 -0
  25. package/src/theme/defaults/dark-equinox.json +10 -0
  26. package/src/theme/defaults/dark-forest.json +10 -0
  27. package/src/theme/defaults/dark-github.json +10 -0
  28. package/src/theme/defaults/dark-gruvbox.json +10 -0
  29. package/src/theme/defaults/dark-lavender.json +10 -0
  30. package/src/theme/defaults/dark-lunar.json +10 -0
  31. package/src/theme/defaults/dark-midnight.json +10 -0
  32. package/src/theme/defaults/dark-monochrome.json +10 -0
  33. package/src/theme/defaults/dark-monokai.json +10 -0
  34. package/src/theme/defaults/dark-nebula.json +10 -0
  35. package/src/theme/defaults/dark-neon-noir.json +10 -0
  36. package/src/theme/defaults/dark-nord.json +10 -0
  37. package/src/theme/defaults/dark-ocean.json +10 -0
  38. package/src/theme/defaults/dark-one.json +10 -0
  39. package/src/theme/defaults/dark-poimandres.json +10 -0
  40. package/src/theme/defaults/dark-rainforest.json +10 -0
  41. package/src/theme/defaults/dark-reef.json +10 -0
  42. package/src/theme/defaults/dark-retro.json +10 -0
  43. package/src/theme/defaults/dark-rose-pine.json +10 -0
  44. package/src/theme/defaults/dark-sakura.json +10 -0
  45. package/src/theme/defaults/dark-slate.json +10 -0
  46. package/src/theme/defaults/dark-solarized.json +10 -0
  47. package/src/theme/defaults/dark-solstice.json +10 -0
  48. package/src/theme/defaults/dark-starfall.json +10 -0
  49. package/src/theme/defaults/dark-sunset.json +10 -0
  50. package/src/theme/defaults/dark-swamp.json +10 -0
  51. package/src/theme/defaults/dark-synthwave.json +10 -0
  52. package/src/theme/defaults/dark-taiga.json +10 -0
  53. package/src/theme/defaults/dark-terminal.json +10 -0
  54. package/src/theme/defaults/dark-tokyo-night.json +10 -0
  55. package/src/theme/defaults/dark-tundra.json +10 -0
  56. package/src/theme/defaults/dark-twilight.json +10 -0
  57. package/src/theme/defaults/dark-volcanic.json +10 -0
  58. package/src/theme/defaults/graphite.json +10 -0
  59. package/src/theme/defaults/light-arctic.json +10 -0
  60. package/src/theme/defaults/light-aurora-day.json +10 -0
  61. package/src/theme/defaults/light-canyon.json +10 -0
  62. package/src/theme/defaults/light-catppuccin.json +10 -0
  63. package/src/theme/defaults/light-cirrus.json +10 -0
  64. package/src/theme/defaults/light-coral.json +10 -0
  65. package/src/theme/defaults/light-cyberpunk.json +10 -0
  66. package/src/theme/defaults/light-dawn.json +10 -0
  67. package/src/theme/defaults/light-dunes.json +10 -0
  68. package/src/theme/defaults/light-eucalyptus.json +10 -0
  69. package/src/theme/defaults/light-forest.json +10 -0
  70. package/src/theme/defaults/light-frost.json +10 -0
  71. package/src/theme/defaults/light-github.json +10 -0
  72. package/src/theme/defaults/light-glacier.json +10 -0
  73. package/src/theme/defaults/light-gruvbox.json +10 -0
  74. package/src/theme/defaults/light-haze.json +10 -0
  75. package/src/theme/defaults/light-honeycomb.json +10 -0
  76. package/src/theme/defaults/light-lagoon.json +10 -0
  77. package/src/theme/defaults/light-lavender.json +10 -0
  78. package/src/theme/defaults/light-meadow.json +10 -0
  79. package/src/theme/defaults/light-mint.json +10 -0
  80. package/src/theme/defaults/light-monochrome.json +10 -0
  81. package/src/theme/defaults/light-ocean.json +10 -0
  82. package/src/theme/defaults/light-one.json +10 -0
  83. package/src/theme/defaults/light-opal.json +10 -0
  84. package/src/theme/defaults/light-orchard.json +10 -0
  85. package/src/theme/defaults/light-paper.json +10 -0
  86. package/src/theme/defaults/light-poimandres.json +10 -0
  87. package/src/theme/defaults/light-prism.json +10 -0
  88. package/src/theme/defaults/light-retro.json +10 -0
  89. package/src/theme/defaults/light-sand.json +10 -0
  90. package/src/theme/defaults/light-savanna.json +10 -0
  91. package/src/theme/defaults/light-solarized.json +10 -0
  92. package/src/theme/defaults/light-soleil.json +10 -0
  93. package/src/theme/defaults/light-sunset.json +10 -0
  94. package/src/theme/defaults/light-synthwave.json +10 -0
  95. package/src/theme/defaults/light-tokyo-night.json +10 -0
  96. package/src/theme/defaults/light-wetland.json +10 -0
  97. package/src/theme/defaults/light-zenith.json +10 -0
  98. package/src/theme/defaults/limestone.json +10 -0
  99. package/src/theme/defaults/mahogany.json +10 -0
  100. package/src/theme/defaults/marble.json +10 -0
  101. package/src/theme/defaults/obsidian.json +10 -0
  102. package/src/theme/defaults/onyx.json +10 -0
  103. package/src/theme/defaults/pearl.json +10 -0
  104. package/src/theme/defaults/porcelain.json +10 -0
  105. package/src/theme/defaults/quartz.json +10 -0
  106. package/src/theme/defaults/sandstone.json +10 -0
  107. package/src/theme/defaults/titanium.json +10 -0
  108. package/src/theme/light.json +10 -0
  109. package/src/theme/schema-validation.ts +7 -0
  110. package/src/theme/schema.ts +18 -0
  111. package/src/theme/theme-schema.json +30 -0
  112. package/src/tui.ts +4 -1
@@ -12,6 +12,24 @@ export interface ThemeJson {
12
12
  cardBg?: ColorValue;
13
13
  infoBg?: ColorValue;
14
14
  };
15
+ /**
16
+ * The terminal this theme was made for, for hosts that paint the terminal
17
+ * themselves (Tern). omp never sets the terminal's colors: its TUI draws on
18
+ * whatever background the terminal has. A host derives absent fields from
19
+ * `colors`.
20
+ */
21
+ terminal?: {
22
+ /** Terminal background. */
23
+ background?: ColorValue;
24
+ /** Default text. */
25
+ foreground?: ColorValue;
26
+ /** The window around the terminal: sidebar, tab bar, title bar. */
27
+ chrome?: ColorValue;
28
+ /** Lifted surfaces: popovers, menus, buttons. */
29
+ widget?: ColorValue;
30
+ /** ANSI colors 0–15: exactly 16. */
31
+ ansi?: ColorValue[];
32
+ };
15
33
  symbols?: {
16
34
  preset?: "unicode" | "nerd" | "ascii";
17
35
  overrides?: Record<string, string>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-tui",
4
- "version": "18.4.6",
4
+ "version": "18.4.8",
5
5
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": {
@@ -41,14 +41,14 @@
41
41
  "gen:glyphs": "bun scripts/gen-glyphs.ts"
42
42
  },
43
43
  "dependencies": {
44
- "@oh-my-pi/omptype": "18.4.6",
45
- "@oh-my-pi/pi-agent-core": "18.4.6",
46
- "@oh-my-pi/pi-ai": "18.4.6",
47
- "@oh-my-pi/pi-catalog": "18.4.6",
48
- "@oh-my-pi/pi-natives": "18.4.6",
49
- "@oh-my-pi/pi-utils": "18.4.6",
50
- "@oh-my-pi/pi-wire": "18.4.6",
51
- "@oh-my-pi/snapcompact": "18.4.6"
44
+ "@oh-my-pi/omptype": "18.4.8",
45
+ "@oh-my-pi/pi-agent-core": "18.4.8",
46
+ "@oh-my-pi/pi-ai": "18.4.8",
47
+ "@oh-my-pi/pi-catalog": "18.4.8",
48
+ "@oh-my-pi/pi-natives": "18.4.8",
49
+ "@oh-my-pi/pi-utils": "18.4.8",
50
+ "@oh-my-pi/pi-wire": "18.4.8",
51
+ "@oh-my-pi/snapcompact": "18.4.8"
52
52
  },
53
53
  "devDependencies": {
54
54
  "kitty-vt-wasm": "^0.2.0"
@@ -38,7 +38,7 @@ import {
38
38
  type NativeThemePalette,
39
39
  setNativeSymbolPreset,
40
40
  } from "../theme/theme";
41
- import type { Component, OverlayOptions } from "../tui";
41
+ import type { Component, OverlayOptions, RenderScheduler, RenderTimer } from "../tui";
42
42
  import { TspDocument } from "./apply";
43
43
  import { getNativeBlob } from "./blobs";
44
44
  import { node } from "./describe";
@@ -80,9 +80,23 @@ export interface NativeBackendOptions {
80
80
  readonly recordPath?: string;
81
81
  /** Log the `rows` fallback count per frame. Defaults to `PI_TUI_NATIVE_STATS=1`. */
82
82
  readonly stats?: boolean;
83
- readonly now?: () => number;
83
+ /** Clock and timers (stall wake-up); defaults to `Date.now` and unref'd `setTimeout`. */
84
+ readonly scheduler?: RenderScheduler;
84
85
  }
85
86
 
87
+ /** Real clock and timers that never keep the process alive on their own. */
88
+ const DEFAULT_SCHEDULER: RenderScheduler = {
89
+ now: () => Date.now(),
90
+ scheduleImmediate: callback => {
91
+ setImmediate(callback);
92
+ },
93
+ scheduleRender: (callback, delayMs) => {
94
+ const timer = setTimeout(callback, delayMs);
95
+ timer.unref();
96
+ return { cancel: () => clearTimeout(timer) };
97
+ },
98
+ };
99
+
86
100
  /** Frames kept for the debug `tsp` op. */
87
101
  const RECENT_FRAMES = 64;
88
102
  /** An unanswered frame older than this no longer holds rendering back. */
@@ -216,7 +230,9 @@ export class NativeBackend {
216
230
  #mirror: boolean;
217
231
  #recordPath: string | undefined;
218
232
  #stats: boolean;
219
- #now: () => number;
233
+ #scheduler: RenderScheduler;
234
+ /** Wakes a render when the oldest unacked frame of a credit-blocked surface turns stalled. */
235
+ #stallTimer: RenderTimer | undefined;
220
236
  #recent: TspFrame[] = [];
221
237
  #sawResize = false;
222
238
  #live = false;
@@ -237,7 +253,7 @@ export class NativeBackend {
237
253
  this.#mirror = options.mirror === true;
238
254
  this.#recordPath = options.recordPath ?? (Bun.env.PI_TUI_TSP_RECORD || undefined);
239
255
  this.#stats = options.stats ?? Bun.env.PI_TUI_NATIVE_STATS === "1";
240
- this.#now = options.now ?? Date.now;
256
+ this.#scheduler = options.scheduler ?? DEFAULT_SCHEDULER;
241
257
  this.#inline = this.#newSurface("inline");
242
258
  }
243
259
 
@@ -338,6 +354,7 @@ export class NativeBackend {
338
354
  this.#unbindTheme?.();
339
355
  this.#unbindTheme = undefined;
340
356
  this.#useNerdSymbols(false);
357
+ this.#clearStallTimer();
341
358
  }
342
359
 
343
360
  /**
@@ -440,6 +457,7 @@ export class NativeBackend {
440
457
  this.#pruneOverlayNodes(overlays);
441
458
  if (!this.#hasCredit(surface)) {
442
459
  surface.dirty = true;
460
+ this.#armStallTimer(surface);
443
461
  return;
444
462
  }
445
463
  surface.dirty = false;
@@ -504,7 +522,7 @@ export class NativeBackend {
504
522
  #hasCredit(surface: Surface): boolean {
505
523
  if (surface.unacked.length < this.#credits) return true;
506
524
  const oldest = surface.unacked[0]!;
507
- if (this.#now() - oldest < STALLED_ACK_MS) return false;
525
+ if (this.#scheduler.now() - oldest < STALLED_ACK_MS) return false;
508
526
  logger.warn("TSP: terminal stopped acknowledging frames; resuming without credits", {
509
527
  sf: surface.id,
510
528
  s: surface.seq,
@@ -515,9 +533,27 @@ export class NativeBackend {
515
533
  return true;
516
534
  }
517
535
 
536
+ /** Render again once `surface`'s oldest unacked frame counts as stalled, in case no ack ever arrives. */
537
+ #armStallTimer(surface: Surface): void {
538
+ if (this.#stallTimer) return;
539
+ const delay = surface.unacked[0]! + STALLED_ACK_MS - this.#scheduler.now();
540
+ this.#stallTimer = this.#scheduler.scheduleRender(
541
+ () => {
542
+ this.#stallTimer = undefined;
543
+ this.#host.requestRender();
544
+ },
545
+ Math.max(0, delay),
546
+ );
547
+ }
548
+
549
+ #clearStallTimer(): void {
550
+ this.#stallTimer?.cancel();
551
+ this.#stallTimer = undefined;
552
+ }
553
+
518
554
  #sendFrame(surface: Surface, ops: readonly TspOp[]): void {
519
555
  surface.seq++;
520
- surface.unacked.push(this.#now());
556
+ surface.unacked.push(this.#scheduler.now());
521
557
  const frame: TspFrame = { sf: surface.id, s: surface.seq, ops };
522
558
  if (surface.doc) {
523
559
  const errors = surface.doc.applyFrame(frame);
@@ -563,7 +599,7 @@ export class NativeBackend {
563
599
  }
564
600
  }
565
601
  try {
566
- fs.appendFileSync(path, `${JSON.stringify({ t: this.#now(), dir, verb, params, body: payload })}\n`);
602
+ fs.appendFileSync(path, `${JSON.stringify({ t: this.#scheduler.now(), dir, verb, params, body: payload })}\n`);
567
603
  } catch (error) {
568
604
  logger.warn("TSP: recording failed; disabling", { path, error: String(error) });
569
605
  this.#recordPath = undefined;
@@ -583,6 +619,7 @@ export class NativeBackend {
583
619
  const newly = Math.min(event.s, surface.seq) - surface.acked;
584
620
  surface.acked = Math.min(event.s, surface.seq);
585
621
  surface.unacked.splice(0, newly);
622
+ this.#clearStallTimer();
586
623
  if (surface.dirty) this.#host.requestRender();
587
624
  return;
588
625
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#18181e",
92
92
  "cardBg": "#1e1e24",
93
93
  "infoBg": "#26262e"
94
+ },
95
+ "terminal": {
96
+ "background": "#18181e",
97
+ "foreground": "#cccccc",
98
+ "chrome": "#121212",
99
+ "widget": "#1e1e24",
100
+ "ansi": [
101
+ "#000000", "#cd3131", "#0dbc79", "#e5e510", "#2472c8", "#bc3fbc", "#11a8cd", "#e5e5e5",
102
+ "#666666", "#f14c4c", "#23d18b", "#f5f543", "#3b8eea", "#d670d6", "#29b8db", "#e5e5e5"
103
+ ]
94
104
  }
95
105
  }
@@ -89,5 +89,15 @@
89
89
  "pageBg": "#fdfcfb",
90
90
  "cardBg": "#ffffff",
91
91
  "infoBg": "#faf9f8"
92
+ },
93
+ "terminal": {
94
+ "background": "alabaster",
95
+ "foreground": "chiseledBlack",
96
+ "chrome": "lightShadow",
97
+ "widget": "#ffffff",
98
+ "ansi": [
99
+ "chiseledBlack", "#8a3c3c", "#405840", "#7a6620", "#3a5878", "#6a4a70", "#2f6670", "#909098",
100
+ "shadowGray", "#a85050", "#587a58", "#957d30", "#50709a", "#86608c", "#4a8088", "#c8c8ce"
101
+ ]
92
102
  }
93
103
  }
@@ -92,5 +92,15 @@
92
92
  "pageBg": "caveDark",
93
93
  "cardBg": "#1b1520",
94
94
  "infoBg": "#251d2b"
95
+ },
96
+ "terminal": {
97
+ "background": "caveDark",
98
+ "foreground": "quartz",
99
+ "chrome": "caveDeep",
100
+ "widget": "customMsgBg",
101
+ "ansi": [
102
+ "crystalFacet", "#d96c75", "#8eb897", "gold", "#7c9cf0", "amethyst", "#6cc4c8", "#cfc4d8",
103
+ "#8b7a99", "#f0909a", "#a8c9b0", "#e8cc6a", "#a4baff", "lavender", "#9adfe0", "quartz"
104
+ ]
95
105
  }
96
106
  }
@@ -89,5 +89,15 @@
89
89
  "pageBg": "#121419",
90
90
  "cardBg": "#1a1e25",
91
91
  "infoBg": "#2a2317"
92
+ },
93
+ "terminal": {
94
+ "background": "coal",
95
+ "foreground": "ash",
96
+ "chrome": "#0f1114",
97
+ "widget": "coalLighter",
98
+ "ansi": [
99
+ "steel", "error", "success", "#e3c25e", "#7ba8d4", "#b88cc8", "#67b8a8", "#b4bac8",
100
+ "soot", "#ef7a72", "#9cc98a", "#f0d88a", "#9cc2e8", "#d0aade", "#8cd0c2", "#eef0f6"
101
+ ]
92
102
  }
93
103
  }
@@ -87,5 +87,15 @@
87
87
  "pageBg": "#171613",
88
88
  "cardBg": "#1f1c19",
89
89
  "infoBg": "#2a2520"
90
+ },
91
+ "terminal": {
92
+ "background": "charcoal",
93
+ "foreground": "dustyWhite",
94
+ "chrome": "obsidian",
95
+ "widget": "#1f1c19",
96
+ "ansi": [
97
+ "coolingLava", "ironOxide", "mineralGreen", "#c9a24a", "#6f8fae", "#a87a9a", "#6a9e9e", "dustyWhite",
98
+ "#776e65", "rustOrange", "lichtenGreen", "#e0c070", "#93b0cc", "#c69ab8", "#8cbcbc", "pumice"
99
+ ]
90
100
  }
91
101
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#f9f7f1",
92
92
  "cardBg": "#fefdfb",
93
93
  "infoBg": "#f5f8f3"
94
+ },
95
+ "terminal": {
96
+ "background": "barkCream",
97
+ "foreground": "deepBark",
98
+ "chrome": "userMsgBg",
99
+ "widget": "#fefdfb",
100
+ "ansi": [
101
+ "forestFloor", "#b05248", "mossSage", "#8f7226", "#466888", "#865878", "#3a7678", "warmGray",
102
+ "barkCharcoal", "#c0645a", "#6a8a60", "#a08436", "#5a7ea0", "#9a6a8c", "#4a8a8c", "barkStriation"
103
+ ]
94
104
  }
95
105
  }
@@ -87,5 +87,15 @@
87
87
  "pageBg": "#05070B",
88
88
  "cardBg": "#0B111A",
89
89
  "infoBg": "#142338"
90
+ },
91
+ "terminal": {
92
+ "background": "abyssBlack",
93
+ "foreground": "#c8d6e5",
94
+ "chrome": "abyssBlack",
95
+ "widget": "trenchBlue",
96
+ "ansi": [
97
+ "slateBlue", "errorRed", "kelpGreen", "warningAmber", "crystalBlue", "#c77dff", "abyssCyan", "#a9b8c8",
98
+ "dimSteel", "#ff8080", "#6ee0ab", "#ffd27a", "#8cc0ff", "#dda6ff", "glowCyan", "#e6eef7"
99
+ ]
90
100
  }
91
101
  }
@@ -100,5 +100,15 @@
100
100
  "pageBg": "#1a1f2b",
101
101
  "cardBg": "#242933",
102
102
  "infoBg": "#353a48"
103
+ },
104
+ "terminal": {
105
+ "background": "#1a1f2b",
106
+ "foreground": "snowStorm0",
107
+ "chrome": "#1a1f2b",
108
+ "widget": "deepPolar",
109
+ "ansi": [
110
+ "polarNight1", "auroraRed", "auroraGreen", "auroraYellow", "frost2", "auroraPurple", "frost1", "snowStorm1",
111
+ "#616e88", "auroraRed", "auroraGreen", "auroraYellow", "frost2", "auroraPurple", "frost0", "snowStorm2"
112
+ ]
103
113
  }
104
114
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#0f0f1a",
92
92
  "cardBg": "#131320",
93
93
  "infoBg": "#0b161a"
94
+ },
95
+ "terminal": {
96
+ "background": "userMsgBg",
97
+ "foreground": "#d8d8e8",
98
+ "chrome": "#0a0a12",
99
+ "widget": "toolPendingBg",
100
+ "ansi": [
101
+ "#2a2a3e", "red", "green", "yellow", "#3a8dff", "accent", "blue", "#c0c0d0",
102
+ "#6c6c86", "#ff4d85", "#5effc0", "#fff566", "#75b0ff", "#d45cff", "#33dcf0", "#ffffff"
103
+ ]
94
104
  }
95
105
  }
@@ -103,5 +103,15 @@
103
103
  "pageBg": "base",
104
104
  "cardBg": "mantle",
105
105
  "infoBg": "surface0"
106
+ },
107
+ "terminal": {
108
+ "background": "base",
109
+ "foreground": "text",
110
+ "chrome": "mantle",
111
+ "widget": "mantle",
112
+ "ansi": [
113
+ "surface1", "red", "green", "yellow", "blue", "pink", "teal", "subtext1",
114
+ "#656881", "red", "green", "yellow", "blue", "pink", "teal", "subtext0"
115
+ ]
106
116
  }
107
117
  }
@@ -87,5 +87,15 @@
87
87
  "pageBg": "#0B0D10",
88
88
  "cardBg": "#14181D",
89
89
  "infoBg": "#1D2229"
90
+ },
91
+ "terminal": {
92
+ "background": "#0b0d10",
93
+ "foreground": "#c9d1db",
94
+ "chrome": "#08090b",
95
+ "widget": "limestoneDark",
96
+ "ansi": [
97
+ "stalactite", "errorRed", "mineralGreen", "amber", "crystalBlue", "#b88ad8", "#56c2b8", "mutedGray",
98
+ "dimGray", "#ef9097", "#94d090", "#ecc46e", "veinBlue", "#d2aeea", "#86dcd2", "#e2e7ee"
99
+ ]
90
100
  }
91
101
  }
@@ -102,5 +102,15 @@
102
102
  "pageBg": "base",
103
103
  "cardBg": "mantle",
104
104
  "infoBg": "surface"
105
+ },
106
+ "terminal": {
107
+ "background": "base",
108
+ "foreground": "text",
109
+ "chrome": "crust",
110
+ "widget": "mantle",
111
+ "ansi": [
112
+ "surface", "pink", "#29d398", "peach", "blue", "magenta", "#59e1e3", "text",
113
+ "#6c6f93", "#ec6a88", "#3fdaa4", "#fbc3a7", "#3fc4de", "#f075b5", "#6be4e6", "#ffffff"
114
+ ]
105
115
  }
106
116
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#242933",
92
92
  "cardBg": "#323846",
93
93
  "infoBg": "#2d333b"
94
+ },
95
+ "terminal": {
96
+ "background": "userMsgBg",
97
+ "foreground": "#d8dee9",
98
+ "chrome": "#1e222b",
99
+ "widget": "selectedBg",
100
+ "ansi": [
101
+ "#3b4252", "red", "green", "yellow", "#81a1c1", "#b48ead", "cyan", "gray",
102
+ "#6a7894", "red", "green", "yellow", "#81a1c1", "#b48ead", "#8fbcbb", "#eceff4"
103
+ ]
94
104
  }
95
105
  }
@@ -86,5 +86,15 @@
86
86
  "pageBg": "#07070d",
87
87
  "cardBg": "#0f1018",
88
88
  "infoBg": "#17152a"
89
+ },
90
+ "terminal": {
91
+ "background": "#07070d",
92
+ "foreground": "#dcd8f0",
93
+ "chrome": "void",
94
+ "widget": "shadow",
95
+ "ansi": [
96
+ "#24213a", "error", "success", "warning", "starblue", "#b77ee0", "#5cc6d6", "#bdb8d1",
97
+ "dim", "#f08592", "#8ee0bf", "#f7cf86", "#a3c1ff", "#d1a6f2", "#8adbe6", "starlight"
98
+ ]
89
99
  }
90
100
  }
@@ -98,5 +98,15 @@
98
98
  "pageBg": "#091833",
99
99
  "cardBg": "#0D0D15",
100
100
  "infoBg": "#1B0D2A"
101
+ },
102
+ "terminal": {
103
+ "background": "deepNavy",
104
+ "foreground": "electricCyan",
105
+ "chrome": "#000b1e",
106
+ "widget": "#0b2956",
107
+ "ansi": [
108
+ "#000b1e", "#ff0000", "#00e05a", "acidYellow", "#3a7bff", "neonMagenta", "electricCyan", "#d7d7d5",
109
+ "#5a6b8c", "#ff6f61", "#00ff00", "#ffff00", "#7aa8ff", "#ff6af0", "#5ff4fa", "#ffffff"
110
+ ]
101
111
  }
102
112
  }
@@ -94,5 +94,15 @@
94
94
  "pageBg": "#1e1f29",
95
95
  "cardBg": "#282A36",
96
96
  "infoBg": "#343746"
97
+ },
98
+ "terminal": {
99
+ "background": "background",
100
+ "foreground": "foreground",
101
+ "chrome": "toolPendingBg",
102
+ "widget": "toolPendingBg",
103
+ "ansi": [
104
+ "toolPendingBg", "red", "green", "yellow", "purple", "pink", "cyan", "foreground",
105
+ "comment", "#ff6e6e", "#69ff94", "#ffffa5", "#d6acff", "#ff92df", "#a4ffff", "#ffffff"
106
+ ]
97
107
  }
98
108
  }
@@ -87,5 +87,15 @@
87
87
  "pageBg": "#08070d",
88
88
  "cardBg": "#101018",
89
89
  "infoBg": "#1a1523"
90
+ },
91
+ "terminal": {
92
+ "background": "#08070d",
93
+ "foreground": "silver",
94
+ "chrome": "void",
95
+ "widget": "obsidian",
96
+ "ansi": [
97
+ "#26232e", "error", "success", "corona", "#7096bf", "#a77cc9", "#5fb3b8", "silver",
98
+ "dim", "#e57584", "#83d4a3", "#f9d877", "#98b6d6", "#c6a0e0", "#86cdd1", "#f3eee4"
99
+ ]
90
100
  }
91
101
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#21252b",
92
92
  "cardBg": "#282c34",
93
93
  "infoBg": "#23272e"
94
+ },
95
+ "terminal": {
96
+ "background": "toolPendingBg",
97
+ "foreground": "gray",
98
+ "chrome": "userMsgBg",
99
+ "widget": "userMsgBg",
100
+ "ansi": [
101
+ "#3f4451", "red", "green", "yellow", "blue", "#c678dd", "cyan", "#d7dae0",
102
+ "#7f848e", "accent", "#a5e075", "#f2d49b", "#82aaf0", "#de73ff", "#4cd1e0", "#f0f2f5"
103
+ ]
94
104
  }
95
105
  }
@@ -86,5 +86,15 @@
86
86
  "pageBg": "#0f1115",
87
87
  "cardBg": "#161a20",
88
88
  "infoBg": "#1b1f26"
89
+ },
90
+ "terminal": {
91
+ "background": "#0f1115",
92
+ "foreground": "light",
93
+ "chrome": "#0c0e11",
94
+ "widget": "#161a20",
95
+ "ansi": [
96
+ "#2a2e36", "error", "success", "warning", "#6f93d6", "#9a85d6", "cool", "#b9bec6",
97
+ "dim", "#e88a8a", "#8fd4a7", "#f2cb80", "#93b1e6", "#b8a6e6", "#82c3d1", "#f0f2f5"
98
+ ]
89
99
  }
90
100
  }
@@ -92,5 +92,15 @@
92
92
  "pageBg": "#0A120E",
93
93
  "cardBg": "#141F1A",
94
94
  "infoBg": "#2A3526"
95
+ },
96
+ "terminal": {
97
+ "background": "#0a120e",
98
+ "foreground": "lichen",
99
+ "chrome": "#070c09",
100
+ "widget": "#141f1a",
101
+ "ansi": [
102
+ "shadow", "#c44c3c", "moss", "#d1b46a", "#6f95b8", "#b07fa3", "#4fa69a", "#a9b39b",
103
+ "stone", "#db6e5c", "#a9d1a0", "#e3cc8e", "#93b3d1", "#c9a0bf", "#7cc4b8", "#dfe6cf"
104
+ ]
95
105
  }
96
106
  }
@@ -101,5 +101,15 @@
101
101
  "pageBg": "#010409",
102
102
  "cardBg": "bg",
103
103
  "infoBg": "bgSubtle"
104
+ },
105
+ "terminal": {
106
+ "background": "bg",
107
+ "foreground": "text",
108
+ "chrome": "#010409",
109
+ "widget": "bgElevated",
110
+ "ansi": [
111
+ "#484f58", "redLight", "green", "yellow", "blue", "#bc8cff", "#39c5cf", "#b1bac4",
112
+ "textDim", "#ffa198", "#56d364", "#e3b341", "blueLight", "purple", "#56d4dd", "#ffffff"
113
+ ]
104
114
  }
105
115
  }
@@ -108,5 +108,15 @@
108
108
  "pageBg": "#1d2021",
109
109
  "cardBg": "#282828",
110
110
  "infoBg": "#3c3836"
111
+ },
112
+ "terminal": {
113
+ "background": "bg0",
114
+ "foreground": "fg1",
115
+ "chrome": "userMsgBg",
116
+ "widget": "bg1",
117
+ "ansi": [
118
+ "bg0", "#da271f", "neutralGreen", "neutralYellow", "neutralBlue", "neutralPurple", "neutralAqua", "fg4",
119
+ "gray", "red", "green", "yellow", "blue", "purple", "aqua", "fg1"
120
+ ]
111
121
  }
112
122
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#1e1f29",
92
92
  "cardBg": "#252630",
93
93
  "infoBg": "#202b28"
94
+ },
95
+ "terminal": {
96
+ "background": "userMsgBg",
97
+ "foreground": "gray",
98
+ "chrome": "#191a21",
99
+ "widget": "selectedBg",
100
+ "ansi": [
101
+ "darkGray", "red", "green", "yellow", "blue", "#ff79c6", "cyan", "gray",
102
+ "dimGray", "#ff6e6e", "#69ff94", "#ffffa5", "#d6acff", "#ff92df", "#a4ffff", "#ffffff"
103
+ ]
94
104
  }
95
105
  }
@@ -85,5 +85,15 @@
85
85
  "pageBg": "#0a0c11",
86
86
  "cardBg": "#11151c",
87
87
  "infoBg": "#161a24"
88
+ },
89
+ "terminal": {
90
+ "background": "#0a0c11",
91
+ "foreground": "moonlight",
92
+ "chrome": "#07080c",
93
+ "widget": "#11151c",
94
+ "ansi": [
95
+ "#252a35", "error", "success", "warning", "ice", "#b294d4", "#6cc0cc", "#b9c2cf",
96
+ "dim", "#ec8d8d", "#93d6b5", "#f6d6a3", "glow", "#ccb4e6", "#95d6df", "#f0f3f7"
97
+ ]
88
98
  }
89
99
  }
@@ -91,5 +91,15 @@
91
91
  "pageBg": "#000000",
92
92
  "cardBg": "#050f16",
93
93
  "infoBg": "#001008"
94
+ },
95
+ "terminal": {
96
+ "background": "userMsgBg",
97
+ "foreground": "#cfd8dc",
98
+ "chrome": "userMsgBg",
99
+ "widget": "toolPendingBg",
100
+ "ansi": [
101
+ "darkGray", "red", "green", "yellow", "blue", "#d500f9", "cyan", "gray",
102
+ "dimGray", "#ff5252", "#69f0ae", "#ffff00", "#448aff", "#e040fb", "#18ffff", "#eceff1"
103
+ ]
94
104
  }
95
105
  }
@@ -90,5 +90,15 @@
90
90
  "pageBg": "#0d0d0d",
91
91
  "cardBg": "gray1",
92
92
  "infoBg": "gray3"
93
+ },
94
+ "terminal": {
95
+ "background": "#0d0d0d",
96
+ "foreground": "gray8",
97
+ "chrome": "#080808",
98
+ "widget": "gray1",
99
+ "ansi": [
100
+ "gray3", "errorRed", "successGreen", "warningYellow", "#55708a", "#7a5a8a", "#558a8a", "gray7",
101
+ "gray5", "#b07a7a", "#7ab07a", "#b0b07a", "#7a95b0", "#a07ab0", "accent", "gray9"
102
+ ]
93
103
  }
94
104
  }
@@ -94,5 +94,15 @@
94
94
  "pageBg": "#1a1b17",
95
95
  "cardBg": "#1e1f1c",
96
96
  "infoBg": "#3e3d32"
97
+ },
98
+ "terminal": {
99
+ "background": "monokaiBg",
100
+ "foreground": "monokaiText",
101
+ "chrome": "userMsgBg",
102
+ "widget": "userMsgBg",
103
+ "ansi": [
104
+ "#333333", "#d32965", "#86b42b", "#b3b42b", "#6a7ec8", "#8c6bc8", "#56adbc", "#e3e3dd",
105
+ "#717171", "monokaiPink", "monokaiGreen", "#e2e22e", "#819aff", "monokaiPurple", "monokaiCyan", "monokaiText"
106
+ ]
97
107
  }
98
108
  }
@@ -86,5 +86,15 @@
86
86
  "pageBg": "#0a0912",
87
87
  "cardBg": "#12101c",
88
88
  "infoBg": "#1b1530"
89
+ },
90
+ "terminal": {
91
+ "background": "#0a0912",
92
+ "foreground": "#e0d4ec",
93
+ "chrome": "void",
94
+ "widget": "#12101c",
95
+ "ansi": [
96
+ "nebula", "error", "success", "warning", "#7f8ff0", "magenta", "teal", "#bdb2c9",
97
+ "dim", "#ee8590", "#84dcc3", "#f7cc8a", "#a6b0ff", "#e99be9", "#6fd0dc", "star"
98
+ ]
89
99
  }
90
100
  }