@cplieger/web-terminal-ui 4.1.0 → 4.1.1

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 (2) hide show
  1. package/css/30-tabs.css +35 -15
  2. package/package.json +2 -2
package/css/30-tabs.css CHANGED
@@ -356,6 +356,12 @@
356
356
  from the filled done/working/input states (WCAG 1.4.1). */
357
357
  background: transparent;
358
358
  border: 1.5px solid color-mix(in oklch, var(--text) 45%, transparent);
359
+ /* Reset every transient visual owned by a status. In particular, a dot that
360
+ leaves working must stop its pulse, and a dot that enters working must not
361
+ carry the input ring or an exited opacity into the animated paint layer. */
362
+ box-shadow: none;
363
+ opacity: 1;
364
+ animation: none;
359
365
  }
360
366
 
361
367
  /* Reveal a dot only once its session has reported activity (the tabs feature
@@ -370,31 +376,33 @@
370
376
  border: 1.5px solid color-mix(in oklch, var(--text) 45%, transparent);
371
377
  }
372
378
 
373
- /* Agent working: solid pulsing white. (Was purple to match Kiro IDE's thinking
374
- colour, but that collides with the purple active-tab fill; white reads clearly
375
- on every tab state.) Motion is the primary non-hue cue. Server-side this is
376
- driven by the OSC 9;4 progress signal, so it tracks agent activity, not the
377
- user typing at the prompt. */
379
+ /* Agent working: solid pulsing pale lime. Its high lightness keeps it clear on
380
+ every tab state, while its yellow-green hue complements the Kiro purple active
381
+ tab. Motion is the primary non-hue cue. Server-side this is driven by the OSC
382
+ 9;4 progress signal, so it tracks agent activity, not the user typing at the
383
+ prompt. */
378
384
  :where(.wt-root) .wt-status-dot[data-status="working"] {
379
- background: #fff;
380
- border-color: #fff;
385
+ background: #d9f99d;
386
+ border-color: #d9f99d;
381
387
  animation: wt-pulse 1.2s ease-in-out infinite;
382
388
  }
383
389
 
384
- /* Agent done / ready: solid green, matching Kiro IDE's "Ready" (#22c55e), no
385
- motion. The filled dot distinguishes it from the hollow idle without hue. */
390
+ /* Agent done / ready: solid saturated green, matching Kiro IDE's "Ready"
391
+ (#22c55e), no motion. Keeping it darker and more saturated than working's
392
+ pale lime makes the two states distinct by lightness as well as motion. */
386
393
  :where(.wt-root) .wt-status-dot[data-status="done"] {
387
394
  background: #22c55e;
388
395
  border-color: #22c55e;
389
396
  }
390
397
 
391
- /* User action required (permission / approval): solid amber matching Kiro IDE's
392
- "waiting-approval" (#fbbf24), plus a ring so it reads as "needs you" via shape
393
- as well as hue. It persists until you act on or switch into the tab. */
398
+ /* User action required (permission / approval): solid orange (#fb923c), shifted
399
+ away from the old amber so it is clearly separated from both pale-lime working
400
+ and green done, plus a matching ring so it reads as "needs you" via shape as
401
+ well as hue. It persists until you act on or switch into the tab. */
394
402
  :where(.wt-root) .wt-status-dot[data-status="input"] {
395
- background: #fbbf24;
396
- border-color: #fbbf24;
397
- box-shadow: 0 0 0 2px oklch(85% 0.16 85deg / 40%);
403
+ background: #fb923c;
404
+ border-color: #fb923c;
405
+ box-shadow: 0 0 0 2px rgb(251 146 60 / 40%);
398
406
  }
399
407
 
400
408
  /* Exited: a dim hollow dot, static; distinct from idle by its lower opacity. */
@@ -405,7 +413,19 @@
405
413
  }
406
414
 
407
415
  @keyframes wt-pulse {
416
+ 0%,
417
+ 100% {
418
+ /* Pin the animated layer's paint as well as its opacity. When working begins
419
+ in the same frame that input/done ends, an opacity-only animation can
420
+ pulse the previously rasterized orange/green dot. */
421
+ background-color: #d9f99d;
422
+ border-color: #d9f99d;
423
+ opacity: 1;
424
+ }
425
+
408
426
  50% {
427
+ background-color: #d9f99d;
428
+ border-color: #d9f99d;
409
429
  opacity: 0.4;
410
430
  }
411
431
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cplieger/web-terminal-ui",
3
- "version": "4.1.0",
3
+ "version": "4.1.1",
4
4
  "type": "module",
5
5
  "description": "Reference touch-first browser UI for @cplieger/web-terminal-engine: a composable kernel + feature modules (tabs, activity monitor, mobile toolbar, context menu, IME, predictive echo, viewport handling) and CSS. One createTerminal() call.",
6
6
  "license": "GPL-3.0-or-later",
@@ -50,7 +50,7 @@
50
50
  "@vitest/coverage-v8": "4.1.10",
51
51
  "eslint": "10.7.0",
52
52
  "fast-check": "4.9.0",
53
- "happy-dom": "20.10.6",
53
+ "happy-dom": "20.11.0",
54
54
  "html-validate": "11.5.6",
55
55
  "knip": "6.27.0",
56
56
  "prettier": "3.9.5",