@xenosystem/agent-interface-ui 0.1.70 β 0.1.72
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/agent.css +89 -27
- package/package.json +7 -7
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:
|
|
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);
|
|
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 */
|
|
@@ -7743,23 +7764,43 @@ a.xeno-source-card:focus-visible {
|
|
|
7743
7764
|
settled turn cannot be asking (asking is live), so these only ever apply to a receipt. */
|
|
7744
7765
|
.xa-collapsed .xa-turn.xa-done .xa-line.xa-docked .xa-vr { display: block; }
|
|
7745
7766
|
.xa-collapsed .xa-turn.xa-done .xa-line.xa-docked .xa-cur { display: flex; }
|
|
7746
|
-
/* thought-only
|
|
7747
|
-
|
|
7748
|
-
|
|
7767
|
+
/* thought-only: the words are IN FLOW so the auto column sizes to them β a short `Thinking` or
|
|
7768
|
+
`Thought for 3s` gets exactly its width and hugs the bar; the slot is optional (gone when settled).
|
|
7769
|
+
|
|
7770
|
+
π΄ In flow is not the same as unbounded. This rule used to say `min-width: min-content` and
|
|
7771
|
+
`overflow: visible`, which was right for the short word it was written for (2026-09-20) and wrong
|
|
7772
|
+
for the sentence the same slot carries while a thought STREAMS β `Thinking Β· Let me reconsiderβ¦`
|
|
7773
|
+
is the current line of the thought, not a word. A long line therefore ran past the clock line's
|
|
7774
|
+
right edge instead of stopping at it (measured 2026-09-25: words to x 1048 on a line ending at
|
|
7775
|
+
744, with a horizontal scrollbar). `min-width: 0` lets the auto track shrink to the space there
|
|
7776
|
+
is; the column still sizes to the words whenever they fit, and the mask below fades them only
|
|
7777
|
+
when they are actually cut off. */
|
|
7749
7778
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line .xa-cur {
|
|
7750
7779
|
flex: none;
|
|
7751
|
-
min-width:
|
|
7752
|
-
overflow:
|
|
7753
|
-
mask-image: none;
|
|
7754
|
-
-webkit-mask-image: none;
|
|
7780
|
+
min-width: 0;
|
|
7781
|
+
overflow: hidden;
|
|
7755
7782
|
}
|
|
7756
7783
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line .xa-cur .xa-tx {
|
|
7757
|
-
flex:
|
|
7758
|
-
min-width:
|
|
7759
|
-
overflow:
|
|
7784
|
+
flex: 0 1 auto;
|
|
7785
|
+
min-width: 0;
|
|
7786
|
+
overflow: hidden;
|
|
7760
7787
|
height: auto;
|
|
7761
7788
|
}
|
|
7762
7789
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line .xa-cur .xa-t { position: static; }
|
|
7790
|
+
/* π΄ The phrase that is LEAVING must not take a place in the flow. With both in flow, every new
|
|
7791
|
+
phrase of a streaming thought was laid out BESIDE the old one β `Thinking` at 156px, the new
|
|
7792
|
+
`Thinking Β· This isβ¦` at 199px β for the 300 ms the old one takes to leave, and then jumped left
|
|
7793
|
+
into its real place; `Thinking` -> `Thought for 2s` did the same, 71px out (measured 2026-09-25).
|
|
7794
|
+
The leaving phrase overlays the arriving one at the left edge and blurs out, as it does on every
|
|
7795
|
+
other clock line, and is clipped to the words' box so it can neither widen the column nor mark
|
|
7796
|
+
the arriving words as cut off (the Ticker measures `.xa-tx` to decide the fade). */
|
|
7797
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line .xa-cur .xa-t.xa-out {
|
|
7798
|
+
position: absolute;
|
|
7799
|
+
left: 0;
|
|
7800
|
+
right: 0;
|
|
7801
|
+
top: 0;
|
|
7802
|
+
overflow: hidden;
|
|
7803
|
+
}
|
|
7763
7804
|
/* thought-only: one grid live AND settled. Leftover width sits in shots, not in Thought,
|
|
7764
7805
|
so `Worked for 2s | Thought βΊ` hugs the bar and the hang (cur+chev+shots) never
|
|
7765
7806
|
changes tracks when xa-live comes off. */
|
|
@@ -7781,8 +7822,12 @@ a.xeno-source-card:focus-visible {
|
|
|
7781
7822
|
align-items: center;
|
|
7782
7823
|
}
|
|
7783
7824
|
/* 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
|
-
|
|
7825
|
+
Drop the `dot` column so Worked for sits on the left with no indent. Hang stays on Thought.
|
|
7826
|
+
π΄ Keyed on `xa-squared` β the square GONE β never on `:not(.xa-live)`. The turn stops being live
|
|
7827
|
+
~500ms before the square leaves, and in that window this rule left a displayed square with no
|
|
7828
|
+
track: it fell into an implicit row, the line grew 22 -> 28px, and the square blinked out at the
|
|
7829
|
+
far right (measured 2026-09-24). */
|
|
7830
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought.xa-squared {
|
|
7786
7831
|
grid-template-columns: auto auto auto auto 1fr;
|
|
7787
7832
|
grid-template-areas:
|
|
7788
7833
|
"read vr cur chev shots"
|
|
@@ -7799,21 +7844,25 @@ a.xeno-source-card:focus-visible {
|
|
|
7799
7844
|
child in its OWN track, which is what produced the second row. The header floats, the trace is
|
|
7800
7845
|
ordinary flow text, and the browser shortens the first line by the float's width for free.
|
|
7801
7846
|
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
|
|
7847
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared {
|
|
7803
7848
|
display: block;
|
|
7849
|
+
/* the 16px text line CENTRED in the 22px clock row, where the grid had it. A block puts its first
|
|
7850
|
+
line at the top, so without this the thought rose 3px at the fold β the vertical move the eye
|
|
7851
|
+
catches (measured 2026-09-24: y 29 -> 26). The padding is the centring; min-height keeps 22. */
|
|
7852
|
+
padding: 3px 0;
|
|
7804
7853
|
}
|
|
7805
7854
|
/* π΄ The float's HEIGHT decides how many lines are shortened. At the clock row's 22px it
|
|
7806
7855
|
overlapped the trace's second 16px line too, so line 1 also started at x=91.6 instead of
|
|
7807
7856
|
returning to the left margin β measured. Matching the float to the text's own line-height
|
|
7808
7857
|
means exactly ONE line runs in, and every line after it is full width. */
|
|
7809
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7810
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7858
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-cur,
|
|
7859
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-chev {
|
|
7811
7860
|
float: left;
|
|
7812
7861
|
height: 16px;
|
|
7813
7862
|
display: flex;
|
|
7814
7863
|
align-items: center;
|
|
7815
7864
|
}
|
|
7816
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7865
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-chev {
|
|
7817
7866
|
margin-right: 8px; /* the gap the grid's column-gap used to give */
|
|
7818
7867
|
}
|
|
7819
7868
|
/* π΄ The trace must NOT establish a block formatting context. `overflow: hidden` does, and a BFC
|
|
@@ -7821,29 +7870,35 @@ a.xeno-source-card:focus-visible {
|
|
|
7821
7870
|
instead of wrapping under it. The fold's `overflow: hidden` therefore cannot live here; the
|
|
7822
7871
|
0fr/1fr grid on `.xa-hang` is also a BFC, so the FOLD moves out to a wrapper and this element
|
|
7823
7872
|
stays plain flow text. */
|
|
7824
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7873
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-hang {
|
|
7825
7874
|
display: block;
|
|
7826
7875
|
overflow: visible;
|
|
7827
7876
|
grid-template-rows: none;
|
|
7828
7877
|
transition: none;
|
|
7829
7878
|
}
|
|
7830
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7879
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-hang > .xa-hangin {
|
|
7831
7880
|
overflow: visible;
|
|
7832
7881
|
padding: 0;
|
|
7833
7882
|
}
|
|
7834
7883
|
/* folded: the trace is simply not rendered, rather than a zero-height box that would still
|
|
7835
|
-
shorten the first line
|
|
7836
|
-
|
|
7837
|
-
.xa-collapsed .xa-turn.xa-thought-only:not(.xa-
|
|
7884
|
+
shorten the first line β except while CLOSING, when it stays laid out so the line can roll back up
|
|
7885
|
+
over it (the Transcript animates the line's height; the trace cannot animate its own) */
|
|
7886
|
+
.xa-collapsed .xa-turn.xa-thought-only:not(.xa-open) .xa-line.xa-thoughtsolo:not(.xa-closing) > .xa-hang { display: none; }
|
|
7887
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-shots { float: right; }
|
|
7838
7888
|
/* the float must not escape the line into the reply below it */
|
|
7839
|
-
.xa-collapsed .xa-turn.xa-thought-only
|
|
7889
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared::after {
|
|
7840
7890
|
content: '';
|
|
7841
7891
|
display: block;
|
|
7842
7892
|
clear: both;
|
|
7843
7893
|
}
|
|
7844
|
-
|
|
7845
|
-
|
|
7846
|
-
|
|
7894
|
+
/* `Worked for |` leaves with the square: both blur out together (`xa-settle`), and only then are they
|
|
7895
|
+
removed (`xa-squared`) and the thought glides into their place. Removing them the moment the turn
|
|
7896
|
+
stopped β as 0.1.64 did β meant the blur could never render: the words vanished in one frame and
|
|
7897
|
+
the thought jumped 47px left, then sat there half a second before the fold (measured 2026-09-24). */
|
|
7898
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-read,
|
|
7899
|
+
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thoughtsolo.xa-squared > .xa-vr { display: none; }
|
|
7900
|
+
.xa-turn.xa-settle .xa-line.xa-thoughtsolo > .xa-read,
|
|
7901
|
+
.xa-turn.xa-settle .xa-line.xa-thoughtsolo > .xa-vr { animation: xa-dotout 200ms var(--xa-ease-out) both; }
|
|
7847
7902
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-dot { grid-area: dot; }
|
|
7848
7903
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-read { grid-area: read; }
|
|
7849
7904
|
.xa-collapsed .xa-turn.xa-thought-only .xa-line.xa-thought > .xa-vr { grid-area: vr; }
|
|
@@ -9456,6 +9511,9 @@ img.xa-fav { padding: 1px; background: #fff; }
|
|
|
9456
9511
|
.min-h-full {
|
|
9457
9512
|
min-height: 100%;
|
|
9458
9513
|
}
|
|
9514
|
+
.w-0 {
|
|
9515
|
+
width: 0px;
|
|
9516
|
+
}
|
|
9459
9517
|
.w-1 {
|
|
9460
9518
|
width: 0.25rem;
|
|
9461
9519
|
}
|
|
@@ -12185,6 +12243,10 @@ img.xa-fav { padding: 1px; background: #fff; }
|
|
|
12185
12243
|
--tw-drop-shadow: drop-shadow(0 0 34px rgba(255,255,255,0.16));
|
|
12186
12244
|
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
12245
|
}
|
|
12246
|
+
.invert {
|
|
12247
|
+
--tw-invert: invert(100%);
|
|
12248
|
+
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);
|
|
12249
|
+
}
|
|
12188
12250
|
.filter {
|
|
12189
12251
|
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
12252
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenosystem/agent-interface-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.72",
|
|
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.
|
|
45
|
-
"@xenosystem/agent-interface-
|
|
46
|
-
"@xenosystem/agent-interface-
|
|
47
|
-
"@xenosystem/agent-interface-contract": "0.1.
|
|
48
|
-
"@xenosystem/agent-interface-hub-adapter": "0.1.
|
|
44
|
+
"@xenosystem/agent-conversation": "0.1.72",
|
|
45
|
+
"@xenosystem/agent-interface-client": "0.1.72",
|
|
46
|
+
"@xenosystem/agent-interface-core": "0.1.72",
|
|
47
|
+
"@xenosystem/agent-interface-contract": "0.1.72",
|
|
48
|
+
"@xenosystem/agent-interface-hub-adapter": "0.1.72"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"react": "^19.0.0",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build:css": "node scripts/build-css.mjs"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "88d6adeead1ddd1a09885dfdd05d0d281ceca2de"
|
|
67
67
|
}
|