@hanzo/rooms 0.1.23 → 0.1.24

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/Chat.js CHANGED
@@ -50,7 +50,7 @@ import { WEB } from "./lib/web.js";
50
50
  import { useHydrated } from "./lib/hydrated.js";
51
51
  import { base, served } from "./lib/ai.js";
52
52
  import { onServed } from "./lib/served.js";
53
- import { REFUSED, speech, useDictation, useTalk, useVoice, Voice } from "@hanzo/voice";
53
+ import { refused as worded, speech, useDictation, useTalk, useVoice, Voice } from "@hanzo/voice";
54
54
  import { ArrowUp, AudioLines, Image as ImageMark, Mic, Paperclip, Square, Star, PanelRight, X } from "lucide-react";
55
55
  import { ENSO, FREE } from "./lib/ai.js";
56
56
  import { openThread, useOpen } from "./open.js";
@@ -1198,7 +1198,7 @@ function Thread({ placeholder = message(), initial, anonymous = false, heading,
1198
1198
  // WHAT GOES WITH THE MESSAGE, above the frame: one chip a file, each
1199
1199
  // with its own remove, and the reason any file was refused.
1200
1200
  head: files.length || turnedAway || preparing || talk.open || talk.refusal || pause ? (_jsxs(YStack, { width: "calc(100% - 32px)", maxW: `calc(${MEASURE} - 3rem)`, mx: "auto", gap: "$1.5", children: [pause ? (_jsx(LimitedBanner, { message: pause.message, actions: pause.actions, onUsage: () => showSettings("usage") })) : null, files.length ? (_jsx(XStack, { gap: "$1.5", flexWrap: "wrap", role: "list", "aria-label": "Attached files", "data-slot": "composer-attached", children: files.map((one) => (_jsx(HeldChip, { one: one, onRemove: () => drop(at, one.id) }, one.id))) })) : null, preparing ? (_jsxs(Text, { role: "status", "aria-live": "polite", "data-slot": "composer-preparing", fontSize: "$2", color: "$soft", children: [preparing, "\u2026"] })) : null, turnedAway ? (_jsx(Text, { role: "alert", fontSize: "$2", color: BAD, children: turnedAway })) : null, talk.open || talk.refusal ? (_jsx(Text, { role: "status", "aria-live": "polite", "data-slot": "composer-talk-reply", fontSize: "$2", color: talk.refusal ? BAD : "$soft", children: talk.refusal
1201
- ? REFUSED.lost
1201
+ ? worded(talk.refusal)
1202
1202
  : talk.reply
1203
1203
  ? `Hanzo: ${talk.reply}`
1204
1204
  : talk.state === "listening"
package/dist/Meet.js CHANGED
@@ -5,7 +5,7 @@ import { Video, VideoOff, Mic, MicOff, PhoneOff, Copy, Check, Plus, Calendar, Ex
5
5
  import { Text, View, XStack, YStack } from '@hanzo/gui';
6
6
  import { Button } from '@hanzo/ui';
7
7
  import { useIamToken } from '@hanzo/iam/react';
8
- import { REFUSED, speech, useTranscript, useVoice } from '@hanzo/voice';
8
+ import { refused, speech, useTranscript, useVoice } from '@hanzo/voice';
9
9
  import { Face, voiceOf } from './cast.js';
10
10
  import { member } from './team.js';
11
11
  import { cleanForSpeech, speakAgent, stopAgentSpeech, AudioWave, useAgentSpeech } from './speech.js';
@@ -231,7 +231,7 @@ export function Meet() {
231
231
  onPartial: setCaption,
232
232
  onSettled: (text) => setLiveNotes((prev) => [...prev, `${clock()}: You: ${text}`]),
233
233
  });
234
- const transcriberNote = transcriber.reason ?? (transcriber.refusal ? REFUSED.lost : null);
234
+ const transcriberNote = transcriber.reason ?? (transcriber.refusal ? refused(transcriber.refusal) : null);
235
235
  const handleSpokenInput = useCallback(async (transcript) => {
236
236
  const time = clock();
237
237
  setLiveNotes((prev) => [...prev, `${time}: You (voice): ${transcript}`]);
@@ -269,7 +269,7 @@ export function Meet() {
269
269
  };
270
270
  // What the hands-free control says: why it cannot run, or that Hanzo's speech
271
271
  // refused and the browser stood in (or could not) — never silence.
272
- const handsFreeNote = handsFree.reason ?? (handsFree.refusal ? REFUSED[handsFree.refusal.covered ? 'covered' : 'lost'] : null);
272
+ const handsFreeNote = handsFree.reason ?? (handsFree.refusal ? refused(handsFree.refusal) : null);
273
273
  return (_jsxs(YStack, { width: "100%", height: "100%", bg: "$background", overflowX: "auto", overflowY: "auto", children: [_jsxs(XStack, { minH: 56, px: 20, py: 8, gap: 10, flexWrap: "wrap", bg: "$panel", borderBottomWidth: 1, borderBottomColor: "$borderColor", items: "center", justify: "space-between", children: [_jsxs(XStack, { items: "center", gap: 12, shrink: 1, minW: "auto", children: [_jsx(XStack, { width: 32, height: 32, rounded: 8, bg: "$raised", items: "center", justify: "center", shrink: 1, minW: "auto", children: _jsx(Video, { size: 18, color: "var(--foreground)" }) }), _jsxs(YStack, { shrink: 1, minW: "auto", children: [_jsxs(XStack, { items: "center", gap: 8, children: [_jsx(Text, { fontSize: "$4", fontWeight: "700", color: "$ink", children: "Hanzo Meet" }), _jsx(Text, { fontSize: FLOOR, fontWeight: "700", bg: "$hover", color: "$soft", borderWidth: 1, borderColor: "$borderColor", px: 6, py: 1, rounded: 4, children: "LIVE \u00B7 meet.hanzo.ai" })] }), _jsx(Text, { fontSize: "$1", color: "$soft", children: "Native WebRTC video conferencing with AI meeting bot transcription & voice" })] })] }), activeMeetingRoom ? (_jsxs(XStack, { items: "center", gap: 8, shrink: 1, minW: "auto", flexWrap: "wrap", children: [_jsx(XStack, { bg: "$hover", rounded: 8, p: 2, gap: 2, borderWidth: 1, borderColor: "$borderColor", shrink: 1, minW: "auto", children: [
274
274
  ['iframe', 'SFU Stage', Tv],
275
275
  ['grid', 'Agent Grid', LayoutGrid],
package/dist/speech.js CHANGED
@@ -18,7 +18,7 @@ import { Volume2, Square } from 'lucide-react';
18
18
  import { View, XStack } from '@hanzo/gui';
19
19
  import { Button } from '@hanzo/ui';
20
20
  import { useIamToken } from '@hanzo/iam/react';
21
- import { mouth, speech, REFUSED } from '@hanzo/voice';
21
+ import { mouth, refused, speech } from '@hanzo/voice';
22
22
  import { GOOD } from './lib/mix.js';
23
23
  import { base } from './lib/ai.js';
24
24
  import { voiceOf, voiceProfileOf } from './cast.js';
@@ -211,7 +211,7 @@ export function SpeakButton({ text, agentName, compact = false, }) {
211
211
  const voice = voiceOf(agentName);
212
212
  // A browser voice standing in for a refused platform sounds like success;
213
213
  // the label is the one place that says otherwise.
214
- const stood = refusal ? ` ${REFUSED[refusal.covered ? 'covered' : 'lost']}` : '';
214
+ const stood = refusal ? ` ${refused(refusal)}` : '';
215
215
  // An @hanzo/ui Button: ghost at rest, the quiet pressed ground while it
216
216
  // speaks. The word for speaking is the one status here, so it alone takes
217
217
  // the success ink (GOOD holds 4.5:1 on either theme); the icons follow the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/rooms",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "The workspace rooms — Home, Chat, Inbox, Contacts, Meet, Cal, Drive, Board, Work, Bots — and the frame that holds them, once, for every Hanzo surface.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,7 +58,7 @@
58
58
  "@hanzo/plans": ">=1.8.9",
59
59
  "@hanzo/ui": ">=8.27.57",
60
60
  "@hanzo/usage": ">=0.1.18",
61
- "@hanzo/voice": ">=0.1.12",
61
+ "@hanzo/voice": ">=0.1.16",
62
62
  "@hanzogui/shell": "^8.3.20",
63
63
  "lucide-react": ">=1.42.0",
64
64
  "react": ">=19.2.8",
@@ -77,7 +77,7 @@
77
77
  "@hanzo/plans": "1.8.9",
78
78
  "@hanzo/ui": "8.27.57",
79
79
  "@hanzo/usage": "0.1.18",
80
- "@hanzo/voice": "0.1.12",
80
+ "@hanzo/voice": "0.1.16",
81
81
  "@hanzogui/config": "8.3.5",
82
82
  "@hanzogui/core": "8.3.5",
83
83
  "@hanzogui/lucide-icons-2": "8.3.5",