@volter/teams 0.1.28 → 0.1.29

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": "@volter/teams",
3
- "version": "0.1.28",
3
+ "version": "0.1.29",
4
4
  "type": "module",
5
5
  "description": "Volter Teams, the neutral team plane: machine identity and daemon core, the local door and server link, admission from machine grants, product doors, and the Teams server's neutral routes (company RFC 0008).",
6
6
  "license": "MIT",
package/viewer/index.html CHANGED
@@ -40,6 +40,7 @@
40
40
  #session .session-view > section { flex: 1; min-height: 0; overflow: auto; }
41
41
  #session .session-composer { border-top: 1px solid var(--line); padding: 8px; --scui-width: 100%; --scui-height: auto; }
42
42
  #session .session-composer > * { flex: 1; min-width: 0; }
43
+ #session .session-hint { margin: 4px 16px 10px; font-size: 11px; color: var(--volter-text-faint, var(--scui-muted, var(--muted))); }
43
44
  /* The host's header carries the session's details when it hides this one. */
44
45
  #session.header-hidden .scui-team-transcript > header { display: none; }
45
46
  /* A Room's transcript says who wrote each message: its name and face (a person) or mark (an agent). */
@@ -58,8 +59,6 @@
58
59
  #session.layout-rows .scui-message:hover { background: var(--volter-surface-subtle, var(--scui-fill)); }
59
60
  #session.layout-rows .scui-message-actor { display: flex; align-items: baseline; gap: 8px; margin: 0 0 1px; }
60
61
  #session.layout-rows .scui-message-actor-image { position: absolute; left: 20px; top: 10px; width: 36px; height: 36px; }
61
- /* A person's face is round; an agent's mark is a rounded square, so an agent never reads as a person. */
62
- #session.layout-rows .scui-message[data-actor-kind="agent"] .scui-message-actor-image { border-radius: 8px; }
63
62
  #session.layout-rows .scui-message-actor-name { order: 1; font-size: 14.5px; font-weight: 650; color: var(--volter-text-primary, var(--scui-fg)); font-family: var(--volter-font-ui, "Geist", system-ui, sans-serif); letter-spacing: 0; text-transform: none; }
64
63
  #session.layout-rows .scui-message-actor-name::before { display: none; }
65
64
  #session.layout-rows .scui-message-actor-time { order: 2; font-size: 11.5px; color: var(--volter-text-muted, var(--scui-muted)); font-family: var(--volter-font-ui, inherit); }
@@ -11,7 +11,7 @@ import { projectSubagentTranscript } from '@volter/supercode-ui/controller';
11
11
  // A person's picture: the brand's person placeholder. An empty seed is its one standard anonymous face.
12
12
  const personImage = (seed = '') => `https://brand.volter.ai/runner/svg?seed=${encodeURIComponent(seed)}&size=36&radius=18`;
13
13
  // An agent's picture (this session's own, a peer session's): the brand's agent mark, a rounded square, never a face.
14
- const agentImage = (seed) => `https://brand.volter.ai/agent/svg?seed=${encodeURIComponent(seed)}&size=36&radius=8`;
14
+ const agentImage = (seed) => `https://brand.volter.ai/agent/svg?seed=${encodeURIComponent(seed)}&size=36&radius=7`;
15
15
 
16
16
  /**
17
17
  * A message another session sent this one, as its harness delivers it: an envelope naming the sender (a
@@ -114,7 +114,8 @@ export function mountSessionView(element, { onSend, control = false, agentName =
114
114
  const composerState = normalizeUiState({ ...EMPTY_UI_STATE, startup: 'ready', harness: descriptor?.harness ?? '', canSend: canSend && !sending, busy: sending, transcript });
115
115
  render(h('div', { class: 'session-view' },
116
116
  h(TeamTranscript, { session: descriptor, transcript, members, machines, live, status, error, adapter, labels, pending: current.pending }),
117
- canSend ? h('div', { class: 'session-composer scui-root' }, h(Composer, { state: composerState, adapter })) : null,
117
+ canSend ? h('div', { class: 'session-composer scui-root' }, h(Composer, { state: composerState, adapter, labels: current.composerPlaceholder ? { askAgent: current.composerPlaceholder } : undefined })) : null,
118
+ canSend && current.composerHint ? h('p', { class: 'session-hint' }, current.composerHint) : null,
118
119
  ), element);
119
120
  };
120
121
  draw();
@@ -379,7 +379,8 @@
379
379
  .scui-message-actor { display:var(--scui-message-actor-display, none); grid-row:1 / span 9; grid-template-columns:var(--scui-message-actor-columns, auto auto); gap:calc(10px * var(--scui-scaling)); align-items:baseline; color:var(--scui-muted); font:var(--scui-text-xs) var(--scui-font-mono) }
380
380
  .scui-message-actor-time { white-space:nowrap }
381
381
  .scui-message-actor-name { display:inline-flex; align-items:center; gap:calc(8px * var(--scui-scaling)); color:var(--scui-fg); white-space:nowrap }
382
- .scui-message-actor-image { width:18px; height:18px; border-radius:50%; flex:none; object-fit:cover }
382
+ /* A host's picture carries its own shape (a brand face is round, an agent's mark a rounded square): never cropped. */
383
+ .scui-message-actor-image { width:18px; height:18px; flex:none; object-fit:cover }
383
384
  .scui-message-actor-name::before { content:''; width:var(--scui-message-actor-dot, 0); height:var(--scui-message-actor-dot, 0); border-radius:50%; background:var(--scui-message-actor-dot-bg, var(--scui-muted)) }
384
385
  .scui-message-actor-name[data-role="user"]::before { background:var(--scui-message-actor-user-dot-bg, var(--scui-fg)) }
385
386
  /* Muted color, not opacity: opacity crushed the footer text below the 4.5:1 contrast floor (axe color-contrast).