anentrypoint-design 0.0.459 → 0.0.461

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anentrypoint-design",
3
- "version": "0.0.459",
3
+ "version": "0.0.461",
4
4
  "description": "247420 design system SDK — webjsx + modified ripple-ui, single-file ESM bundle for reproducible use of the AnEntrypoint design.",
5
5
  "type": "module",
6
6
  "main": "./dist/247420.js",
@@ -57,6 +57,8 @@ function applyEnvelope(msgs, env, sendApprove) {
57
57
  }
58
58
  } else if (event === 'steer.append') {
59
59
  if (!isDupUser(data.text)) msgs.push({ id: 'u' + msgs.length + env.ts, role: 'user', content: data.text || '', time: formatTime(ts) });
60
+ } else if (event === 'queue.append') {
61
+ if (!isDupUser(data.text)) msgs.push({ id: 'u' + msgs.length + env.ts, role: 'user', content: data.text || '', time: formatTime(ts) });
60
62
  } else if (event === 'assistant.delta') {
61
63
  // Progressive text mid-turn: accumulate into the live bubble; the
62
64
  // settled message.append at turn end overwrites with the authoritative
@@ -166,10 +168,10 @@ export const chat = makePage((ctx) => {
166
168
  const t = (typeof text === 'string' ? text : s().draft || '').trim();
167
169
  if (!t) return;
168
170
 
169
- // Mid-turn send = STEER (kimi's steering): injected at the next step
170
- // boundary instead of starting a parallel turn.
171
+ // Mid-turn send = QUEUE for after the turn (kimi 1.31's Enter channel);
172
+ // injection mid-turn is /steer in the REPL or a wire steer frame.
171
173
  if (s().busy) {
172
- if (sendFrame({ type: 'steer', text: t })) {
174
+ if (sendFrame({ type: 'queue', text: t })) {
173
175
  s().messages = [...s().messages, { id: 'u' + Date.now(), role: 'user', content: t, time: formatTime(Date.now()) }];
174
176
  ctx.set({ draft: '' });
175
177
  }
@@ -212,7 +214,7 @@ export const chat = makePage((ctx) => {
212
214
  draft: st.draft,
213
215
  status: st.busy ? 'streaming…' : (st.conn === 'open' ? 'ready' : 'connecting…'),
214
216
  agentName: 'freddie',
215
- placeholder: st.busy ? 'steer the turn… (or stop)' : 'message…',
217
+ placeholder: st.busy ? 'queue a follow-up… (or stop)' : 'message…',
216
218
  showMinimap: true,
217
219
  banners: st.error ? [noteAlert({ kind: 'error', msg: st.error })] : [],
218
220
  onInput: (v) => { st.draft = v; },
@@ -497,8 +497,18 @@
497
497
 
498
498
  .aicat-portrait { display: inline-flex; align-items: center; gap: var(--space-2-5); padding: var(--space-1) 0; }
499
499
  .aicat-face {
500
- /* 24px is the ICON size inside a 32px round chip — see .chat-file .glyph. */
501
- width: 32px; height: 32px; font-size: 24px;
500
+ /* The face is 3 lines of ascii art ( /\_/\ , ( o.o ) , > ^ < ), not a
501
+ single icon glyph -- the previous 24px/line-height:normal sizing (sized
502
+ like .chat-file .glyph's single-char icon) ran to ~3 line-heights tall
503
+ and clipped the ear/whisker rows against this box's fixed 32px height
504
+ + overflow:hidden. pico (10px) + line-height:1 fits all 3 lines in 30px.
505
+ padding:0 overrides the global `pre { padding: var(--space-5) }` (32px)
506
+ -- box-sizing:border-box + that padding alone exceeded the declared
507
+ 32x32 box, so the box never actually enforced 32x32 and rendered at its
508
+ forced min-content size instead, clipping the art regardless of font
509
+ size. */
510
+ width: 32px; height: 32px; font-size: var(--fs-pico); line-height: 1;
511
+ padding: 0;
502
512
  display: inline-flex; align-items: center; justify-content: center;
503
513
  background: color-mix(in oklab, var(--mascot) 22%, var(--bg-2));
504
514
  border-radius: 50%; flex-shrink: 0;
@@ -1425,8 +1425,11 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
1425
1425
 
1426
1426
  .ds-247420 .aicat-face {
1427
1427
  font-family: var(--os-mono, ui-monospace, monospace);
1428
- font-size: var(--fs-nano);
1429
- line-height: 1.2;
1428
+ /* pico (10px) + line-height:1 = 3 lines at 30px, inside the 32px chip --
1429
+ nano/1.2 (13.2px/line, 39.6px total) clipped the ear/whisker rows
1430
+ against the chip's overflow:hidden. */
1431
+ font-size: var(--fs-pico);
1432
+ line-height: 1;
1430
1433
  margin: 0;
1431
1434
  }
1432
1435
 
@@ -55,7 +55,7 @@ export function collectSlides(deckEl, slot) {
55
55
  return slides;
56
56
  }
57
57
 
58
- export function applyIndex(deckEl, { index, prevIndex, slides, countEl, showOverlay = true, broadcast = true, reason = 'init', flashFn = null } = {}) {
58
+ export function applyIndex(deckEl, { index, prevIndex, slides, countEl, totalEl, showOverlay = true, broadcast = true, reason = 'init', flashFn = null } = {}) {
59
59
  if (!slides.length) return;
60
60
  const prev = prevIndex == null ? -1 : prevIndex;
61
61
  const curr = index;
@@ -64,6 +64,7 @@ export function applyIndex(deckEl, { index, prevIndex, slides, countEl, showOver
64
64
  else s.removeAttribute('data-deck-active');
65
65
  });
66
66
  if (countEl) countEl.textContent = String(curr + 1);
67
+ if (totalEl) totalEl.textContent = String(slides.length);
67
68
  persistIndex(deckEl, curr);
68
69
  if (broadcast) {
69
70
  try { window.postMessage({ slideIndexChanged: curr }, '*'); } catch (e) { /* swallow: cross-frame notification is best-effort, local slide state already updated */ }
@@ -107,7 +107,7 @@ class DeckStage extends HTMLElement {
107
107
  this._index = restoreIndex(this, this._slides);
108
108
  applyIndex(this, {
109
109
  index: this._index, prevIndex: this._prevIndex, slides: this._slides,
110
- countEl: this._countEl, showOverlay: false, broadcast: true, reason: 'init',
110
+ countEl: this._countEl, totalEl: this._totalEl, showOverlay: false, broadcast: true, reason: 'init',
111
111
  flashFn: () => this._flashOverlay()
112
112
  });
113
113
  this._fit();
@@ -147,7 +147,7 @@ class DeckStage extends HTMLElement {
147
147
  this._index = clamped;
148
148
  applyIndex(this, {
149
149
  index: this._index, prevIndex: this._prevIndex, slides: this._slides,
150
- countEl: this._countEl, showOverlay: true, broadcast: true, reason,
150
+ countEl: this._countEl, totalEl: this._totalEl, showOverlay: true, broadcast: true, reason,
151
151
  flashFn: () => this._flashOverlay()
152
152
  });
153
153
  }