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/dist/247420.css +12 -2
- package/dist/247420.js +23 -23
- package/package.json +1 -1
- package/src/components/freddie/pages-chat.js +6 -4
- package/src/css/app-shell/chat-polish.css +12 -2
- package/src/kits/os/theme.css +5 -2
- package/src/kits/slides/deck-stage-state.js +2 -1
- package/src/kits/slides/deck-stage.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anentrypoint-design",
|
|
3
|
-
"version": "0.0.
|
|
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 =
|
|
170
|
-
//
|
|
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: '
|
|
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 ? '
|
|
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
|
-
/*
|
|
501
|
-
|
|
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;
|
package/src/kits/os/theme.css
CHANGED
|
@@ -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
|
-
|
|
1429
|
-
|
|
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
|
}
|