@xenosystem/agent-interface-ui 0.1.69 β†’ 0.1.71

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/dist/agent.css +59 -17
  2. package/package.json +7 -8
package/dist/agent.css CHANGED
@@ -7667,7 +7667,20 @@ a.xeno-source-card:focus-visible {
7667
7667
  ticker to its glyph and the words vanished (2026-09-18); settled, beside a sources control, the line
7668
7668
  hugs its reading so the divider sits right after "1 step" */
7669
7669
  .xa-linerow > .xa-line { flex: 1 1 auto; min-width: 0; }
7670
- .xa-linerow > .xa-line.xa-with-sources { flex: none; }
7670
+ .xa-linerow > .xa-line.xa-with-sources { flex: 0 1 auto; }
7671
+ /* πŸ”΄ a DOCKED step beside the sources: `Worked for 4s | Searched the web Β· xeno hub | 1 source`.
7672
+ Its ticker is `flex: 1 1 0` β€” a zero basis β€” so inside a line that hugs its content it measured
7673
+ 19px and showed the GLYPH ALONE, the 0.1.48 defect again for the one shape it missed (measured
7674
+ 2026-09-24: the most common web-search receipt read `Worked for 4s | β—» | 1 source`). Sized to its
7675
+ words here, and shrinkable, so a long query still fades at the edge instead of pushing the sources off. */
7676
+ .xa-linerow > .xa-line.xa-with-sources .xa-cur { flex: 0 1 auto; }
7677
+ /* …and the words must be IN FLOW to be sized to at all: a live ticker's words are absolutely
7678
+ positioned (so one step can slide over the last), which gives its box no width but the glyph's.
7679
+ Settled there is nothing left to slide over, so the words take their place in the line β€” the
7680
+ thought-only line does the same β€” and the box, not a fixed basis, is what shrinks. */
7681
+ .xa-linerow > .xa-line.xa-with-sources .xa-cur .xa-tx { flex: 0 1 auto; }
7682
+ .xa-linerow > .xa-line.xa-with-sources .xa-cur .xa-t:not(.xa-out) { position: static; display: block; overflow: hidden; }
7683
+ .xa-linerow > .xa-line.xa-with-sources .xa-cur .xa-t.xa-out { display: none; }
7671
7684
  .xa-linerow > .xa-vr-src { display: block; flex: none; width: 1px; height: 10px; background: rgba(var(--xa-ink), 0.12); animation: xa-rise 280ms var(--xa-ease) both; animation-delay: 160ms; }
7672
7685
  .xa-srcline { display: flex; align-items: center; gap: 8px; height: 22px; cursor: pointer; font-size: 11px; color: var(--xa-t4); animation: xa-rise 280ms var(--xa-ease) both; animation-delay: 160ms; }
7673
7686
  .xa-srcline:hover { color: var(--xa-t2); }
@@ -7712,7 +7725,15 @@ a.xeno-source-card:focus-visible {
7712
7725
  /* collapsed steps: while it works the rail stays folded and the clock line carries the current step β€”
7713
7726
  "Working for 4s | Clicked Message @Lil Bro" β€” the text fading out on the right when it is long */
7714
7727
  .xa-line .xa-vr { display: none; flex: none; width: 1px; height: 10px; background: rgba(var(--xa-ink), 0.12); }
7715
- .xa-line .xa-cur { display: none; align-items: center; gap: 7px; flex: 1 1 0; min-width: 0; height: 16px; overflow: hidden; font-size: 11.5px; line-height: 16px; color: var(--xa-t4); mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent 100%); -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent 100%); }
7728
+ .xa-line .xa-cur { display: none; align-items: center; gap: 7px; flex: 1 1 0; min-width: 0; height: 16px; overflow: hidden; font-size: 11.5px; line-height: 16px; color: var(--xa-t4); }
7729
+ /* the fade is for words that are CUT OFF, and only those: masking every ticker faded the last 44px of a
7730
+ short line whole β€” `Searched the web Β· xeno hub` lost its object (the Ticker sets `xa-long` by
7731
+ measuring whether its words overflow) */
7732
+ .xa-line .xa-cur.xa-long { mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent 100%); -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent 100%); }
7733
+ /* a glyph leaving for a bare word closes its slot as it goes β€” width and the gap after it β€” instead of
7734
+ dropping 19px out from under the words in one frame when the old glyph is removed */
7735
+ .xa-line .xa-cur .xa-slot { transition: width 200ms var(--xa-ease), margin-right 200ms var(--xa-ease); }
7736
+ .xa-line .xa-cur .xa-slot.xa-slotout { width: 0; margin-right: -7px; }
7716
7737
  .xa-line .xa-cur .xa-mono { font-size: 11px; }
7717
7738
  /* the first step slides out from behind the clock β€” glyph, then its words; every later step replaces the
7718
7739
  pair: the glyph rises from below as the old one leaves upward, the words come out from behind the glyph */
@@ -7781,8 +7802,12 @@ a.xeno-source-card:focus-visible {
7781
7802
  align-items: center;
7782
7803
  }
7783
7804
  /* settled: the square is display:none, but an empty first track still takes column-gap.
7784
- Drop the `dot` column so Worked for sits on the left with no indent. Hang stays on Thought. */
7785
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thought {
7805
+ Drop the `dot` column so Worked for sits on the left with no indent. Hang stays on Thought.
7806
+ πŸ”΄ Keyed on `xa-squared` β€” the square GONE β€” never on `:not(.xa-live)`. The turn stops being live
7807
+ ~500ms before the square leaves, and in that window this rule left a displayed square with no
7808
+ track: it fell into an implicit row, the line grew 22 -> 28px, and the square blinked out at the
7809
+ far right (measured 2026-09-24). */
7810
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought.xa-squared {
7786
7811
  grid-template-columns: auto auto auto auto 1fr;
7787
7812
  grid-template-areas:
7788
7813
  "read vr cur chev shots"
@@ -7799,21 +7824,25 @@ a.xeno-source-card:focus-visible {
7799
7824
  child in its OWN track, which is what produced the second row. The header floats, the trace is
7800
7825
  ordinary flow text, and the browser shortens the first line by the float's width for free.
7801
7826
  The line stops being a grid here, so the `grid-area` assignments below no longer apply to it. */
7802
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo {
7827
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared {
7803
7828
  display: block;
7829
+ /* the 16px text line CENTRED in the 22px clock row, where the grid had it. A block puts its first
7830
+ line at the top, so without this the thought rose 3px at the fold β€” the vertical move the eye
7831
+ catches (measured 2026-09-24: y 29 -> 26). The padding is the centring; min-height keeps 22. */
7832
+ padding: 3px 0;
7804
7833
  }
7805
7834
  /* πŸ”΄ The float's HEIGHT decides how many lines are shortened. At the clock row's 22px it
7806
7835
  overlapped the trace's second 16px line too, so line 1 also started at x=91.6 instead of
7807
7836
  returning to the left margin β€” measured. Matching the float to the text's own line-height
7808
7837
  means exactly ONE line runs in, and every line after it is full width. */
7809
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-cur,
7810
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-chev {
7838
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-cur,
7839
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-chev {
7811
7840
  float: left;
7812
7841
  height: 16px;
7813
7842
  display: flex;
7814
7843
  align-items: center;
7815
7844
  }
7816
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-chev {
7845
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-chev {
7817
7846
  margin-right: 8px; /* the gap the grid's column-gap used to give */
7818
7847
  }
7819
7848
  /* πŸ”΄ The trace must NOT establish a block formatting context. `overflow: hidden` does, and a BFC
@@ -7821,29 +7850,35 @@ a.xeno-source-card:focus-visible {
7821
7850
  instead of wrapping under it. The fold's `overflow: hidden` therefore cannot live here; the
7822
7851
  0fr/1fr grid on `.xa-hang` is also a BFC, so the FOLD moves out to a wrapper and this element
7823
7852
  stays plain flow text. */
7824
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-hang {
7853
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-hang {
7825
7854
  display: block;
7826
7855
  overflow: visible;
7827
7856
  grid-template-rows: none;
7828
7857
  transition: none;
7829
7858
  }
7830
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-hang > .xa-hangin {
7859
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-hang > .xa-hangin {
7831
7860
  overflow: visible;
7832
7861
  padding: 0;
7833
7862
  }
7834
7863
  /* folded: the trace is simply not rendered, rather than a zero-height box that would still
7835
- shorten the first line */
7836
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-open) .xa-line.xa-thoughtsolo > .xa-hang { display: none; }
7837
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo > .xa-shots { float: right; }
7864
+ shorten the first line β€” except while CLOSING, when it stays laid out so the line can roll back up
7865
+ over it (the Transcript animates the line's height; the trace cannot animate its own) */
7866
+ .xa-collapsed .xa-turn.xa-thought-only:not(.xa-open) .xa-line.xa-thoughtsolo:not(.xa-closing) > .xa-hang { display: none; }
7867
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-shots { float: right; }
7838
7868
  /* the float must not escape the line into the reply below it */
7839
- .xa-collapsed .xa-turn.xa-thought-only:not(.xa-live) .xa-line.xa-thoughtsolo::after {
7869
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared::after {
7840
7870
  content: '';
7841
7871
  display: block;
7842
7872
  clear: both;
7843
7873
  }
7844
- .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo > .xa-read,
7845
- .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo > .xa-vr { display: none; }
7846
- .xa-turn.xa-settle .xa-line.xa-thoughtsolo .xa-read { animation: xa-dotout 200ms var(--xa-ease-out) both; }
7874
+ /* `Worked for |` leaves with the square: both blur out together (`xa-settle`), and only then are they
7875
+ removed (`xa-squared`) and the thought glides into their place. Removing them the moment the turn
7876
+ stopped β€” as 0.1.64 did β€” meant the blur could never render: the words vanished in one frame and
7877
+ the thought jumped 47px left, then sat there half a second before the fold (measured 2026-09-24). */
7878
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-read,
7879
+ .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-vr { display: none; }
7880
+ .xa-turn.xa-settle .xa-line.xa-thoughtsolo > .xa-read,
7881
+ .xa-turn.xa-settle .xa-line.xa-thoughtsolo > .xa-vr { animation: xa-dotout 200ms var(--xa-ease-out) both; }
7847
7882
  .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-dot { grid-area: dot; }
7848
7883
  .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-read { grid-area: read; }
7849
7884
  .xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-vr { grid-area: vr; }
@@ -9456,6 +9491,9 @@ img.xa-fav { padding: 1px; background: #fff; }
9456
9491
  .min-h-full {
9457
9492
  min-height: 100%;
9458
9493
  }
9494
+ .w-0 {
9495
+ width: 0px;
9496
+ }
9459
9497
  .w-1 {
9460
9498
  width: 0.25rem;
9461
9499
  }
@@ -12185,6 +12223,10 @@ img.xa-fav { padding: 1px; background: #fff; }
12185
12223
  --tw-drop-shadow: drop-shadow(0 0 34px rgba(255,255,255,0.16));
12186
12224
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
12187
12225
  }
12226
+ .invert {
12227
+ --tw-invert: invert(100%);
12228
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
12229
+ }
12188
12230
  .filter {
12189
12231
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
12190
12232
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xenosystem/agent-interface-ui",
3
- "version": "0.1.69",
3
+ "version": "0.1.71",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,11 +41,11 @@
41
41
  "react-markdown": "^10.1.0",
42
42
  "remark-gfm": "^4.0.1",
43
43
  "zustand": "^5.0.2",
44
- "@xenosystem/agent-conversation": "0.1.69",
45
- "@xenosystem/agent-interface-contract": "0.1.69",
46
- "@xenosystem/agent-interface-client": "0.1.69",
47
- "@xenosystem/agent-interface-core": "0.1.69",
48
- "@xenosystem/agent-interface-hub-adapter": "0.1.69"
44
+ "@xenosystem/agent-conversation": "0.1.71",
45
+ "@xenosystem/agent-interface-contract": "0.1.71",
46
+ "@xenosystem/agent-interface-core": "0.1.71",
47
+ "@xenosystem/agent-interface-hub-adapter": "0.1.71",
48
+ "@xenosystem/agent-interface-client": "0.1.71"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "react": "^19.0.0",
@@ -62,6 +62,5 @@
62
62
  },
63
63
  "scripts": {
64
64
  "build:css": "node scripts/build-css.mjs"
65
- },
66
- "gitHead": "3388de3feb4e3b64664d7e836c574646c7948e02"
65
+ }
67
66
  }