ugly-app 0.1.288 → 0.1.289

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.
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.288";
1
+ export declare const CLI_VERSION = "0.1.289";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.288";
2
+ export const CLI_VERSION = "0.1.289";
3
3
  //# sourceMappingURL=version.js.map
@@ -11,6 +11,7 @@ export interface BlobVisualizerProps {
11
11
  style?: BlobStyleType;
12
12
  options?: Partial<BlobOptions>;
13
13
  visible?: boolean;
14
+ analyzer?: AnalyserNode | null;
14
15
  }
15
16
  export declare function BlobVisualizer(props: BlobVisualizerProps): import("react/jsx-runtime").JSX.Element;
16
17
  //# sourceMappingURL=BlobVisualizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlobVisualizer.d.ts","sourceRoot":"","sources":["../../../src/client/audio/BlobVisualizer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAa,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAoC5E,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;IACjD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAqJxD"}
1
+ {"version":3,"file":"BlobVisualizer.d.ts","sourceRoot":"","sources":["../../../src/client/audio/BlobVisualizer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAa,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAoC5E,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;IACjD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA2JxD"}
@@ -48,6 +48,11 @@ export function BlobVisualizer(props) {
48
48
  coreRef.current = null;
49
49
  };
50
50
  }, []);
51
+ useEffect(() => {
52
+ if (props.analyzer !== undefined) {
53
+ coreRef.current?.setAnalyzer(props.analyzer);
54
+ }
55
+ }, [props.analyzer]);
51
56
  useEffect(() => {
52
57
  const initStyle = async () => {
53
58
  if (!coreRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"BlobVisualizer.js","sourceRoot":"","sources":["../../../src/client/audio/BlobVisualizer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlobVisualizer.js","sourceRoot":"","sources":["../../../src/client/audio/BlobVisualizer.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.288",
3
+ "version": "0.1.289",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.288";
2
+ export const CLI_VERSION = "0.1.289";
@@ -57,6 +57,7 @@ export interface BlobVisualizerProps {
57
57
  style?: BlobStyleType;
58
58
  options?: Partial<BlobOptions>;
59
59
  visible?: boolean;
60
+ analyzer?: AnalyserNode | null;
60
61
  }
61
62
 
62
63
  export function BlobVisualizer(props: BlobVisualizerProps) {
@@ -74,6 +75,12 @@ export function BlobVisualizer(props: BlobVisualizerProps) {
74
75
  };
75
76
  }, []);
76
77
 
78
+ useEffect(() => {
79
+ if (props.analyzer !== undefined) {
80
+ coreRef.current?.setAnalyzer(props.analyzer);
81
+ }
82
+ }, [props.analyzer]);
83
+
77
84
  useEffect(() => {
78
85
  const initStyle = async () => {
79
86
  if (!coreRef.current) {
@@ -15,7 +15,6 @@ import {
15
15
  import type {
16
16
  AudioVisualizer,
17
17
  BlobStyleType,
18
- BlobVisualizerFunctions,
19
18
  UglyBotSocket,
20
19
  } from 'ugly-app/client';
21
20
 
@@ -97,6 +96,11 @@ function CanvasVizView({
97
96
  useEffect(() => {
98
97
  const canvas = canvasRef.current;
99
98
  if (!canvas) return;
99
+ // Match canvas resolution to display size
100
+ const rect = canvas.getBoundingClientRect();
101
+ const dpr = window.devicePixelRatio || 1;
102
+ canvas.width = rect.width * dpr;
103
+ canvas.height = rect.height * dpr;
100
104
  const viz = createCanvasViz(type);
101
105
  vizRef.current = viz;
102
106
  if (analyzer) viz.setAnalyzer(analyzer);
@@ -105,18 +109,11 @@ function CanvasVizView({
105
109
  viz.detach();
106
110
  vizRef.current = null;
107
111
  };
108
- // eslint-disable-next-line react-hooks/exhaustive-deps
109
- }, [type]);
110
-
111
- useEffect(() => {
112
- vizRef.current?.setAnalyzer(analyzer);
113
- }, [analyzer]);
112
+ }, [type, analyzer]);
114
113
 
115
114
  return (
116
115
  <canvas
117
116
  ref={canvasRef}
118
- width={600}
119
- height={200}
120
117
  style={{ width: '100%', height: 200, borderRadius: 8, background: '#111' }}
121
118
  />
122
119
  );
@@ -131,12 +128,6 @@ function VisualizerView({
131
128
  vizType: VizType;
132
129
  analyzer: AnalyserNode | null;
133
130
  }) {
134
- const blobRef = useRef<BlobVisualizerFunctions>(null);
135
-
136
- useEffect(() => {
137
- blobRef.current?.setAnalyzer(analyzer);
138
- }, [analyzer]);
139
-
140
131
  if (canvasVizTypes.has(vizType)) {
141
132
  return <CanvasVizView type={vizType as CanvasVizType} analyzer={analyzer} />;
142
133
  }
@@ -151,8 +142,8 @@ function VisualizerView({
151
142
  return (
152
143
  <div style={{ height: 300, position: 'relative' }}>
153
144
  <BlobVisualizer
154
- blobRef={blobRef}
155
145
  style={vizType as BlobStyleType}
146
+ analyzer={analyzer}
156
147
  />
157
148
  </div>
158
149
  );
@@ -508,7 +499,8 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
508
499
 
509
500
  const ttsAudio = useTTSAnalyzer();
510
501
  const streamIdRef = useRef<string | null>(null);
511
- const activeWordIdxRef = useRef(-1);
502
+ const playStartRef = useRef(0);
503
+ const wordTimersRef = useRef<ReturnType<typeof setTimeout>[]>([]);
512
504
  const unsubsRef = useRef<Array<() => void>>([]);
513
505
 
514
506
  function addLog(msg: string, kind: LogEntry['kind'] = 'info') {
@@ -531,29 +523,45 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
531
523
  addLog(`Got tts:chunk streamId=${data.streamId} (expected=${streamId}) audioLen=${data.audio?.length ?? 0}`);
532
524
  if (data.streamId !== streamId) return;
533
525
  if (data.audio) {
526
+ if (!playStartRef.current) playStartRef.current = Date.now();
534
527
  ttsAudio.playChunk(data.audio);
535
528
  addLog(`Queued audio chunk (${data.audio.length} b64 chars)`, 'ok');
536
529
  }
537
530
  }),
538
531
  socket.on('tts:word', (data) => {
539
532
  if (data.streamId !== streamId) return;
540
- addLog(`Word: "${data.word}"`);
541
- if (data.word) {
542
- setCurrentWord(data.word);
543
- activeWordIdxRef.current++;
544
- const idx = activeWordIdxRef.current;
545
- setWordHistory((prev) => {
546
- const next = prev.map((w) => ({ ...w, active: false }));
547
- if (idx < next.length) {
548
- next[idx] = { ...next[idx]!, active: true };
533
+ const word = data.word ?? (data as Record<string, unknown>).text as string | undefined;
534
+ const idx = (data as Record<string, unknown>).wordIndex as number | undefined;
535
+ addLog(`Word: "${word}" idx=${idx} startMs=${data.startMs}`);
536
+ if (word != null) {
537
+ // Schedule highlight at the word's startMs relative to playback start
538
+ const delay = typeof data.startMs === 'number' ? data.startMs - (Date.now() - playStartRef.current) : 0;
539
+ const apply = () => {
540
+ setCurrentWord(word);
541
+ if (typeof idx === 'number') {
542
+ setWordHistory((prev) => {
543
+ const next = prev.map((w) => ({ ...w, active: false }));
544
+ if (idx < next.length) {
545
+ next[idx] = { ...next[idx]!, active: true };
546
+ }
547
+ return next;
548
+ });
549
549
  }
550
- return next;
551
- });
550
+ };
551
+ if (delay > 10) {
552
+ const timer = setTimeout(apply, delay);
553
+ wordTimersRef.current.push(timer);
554
+ } else {
555
+ apply();
556
+ }
552
557
  }
553
558
  }),
554
559
  socket.on('tts:done', (data) => {
555
560
  addLog(`Got tts:done streamId=${data.streamId}`);
556
561
  if (data.streamId !== streamId) return;
562
+ for (const t of wordTimersRef.current) clearTimeout(t);
563
+ wordTimersRef.current = [];
564
+ playStartRef.current = 0;
557
565
  setPlaying(false);
558
566
  setCurrentWord('');
559
567
  addLog('Playback complete', 'ok');
@@ -563,6 +571,9 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
563
571
  socket.on('tts:error', (data) => {
564
572
  addLog(`Got tts:error streamId=${data.streamId} msg=${data.message}`, 'err');
565
573
  if (data.streamId !== streamId) return;
574
+ for (const t of wordTimersRef.current) clearTimeout(t);
575
+ wordTimersRef.current = [];
576
+ playStartRef.current = 0;
566
577
  setPlaying(false);
567
578
  addLog(`TTS error: ${data.message ?? 'unknown'}`, 'err');
568
579
  unsubAll();
@@ -575,7 +586,9 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
575
586
  if (!text.trim()) return;
576
587
  const streamId = `tts-${++ttsCounter}`;
577
588
  streamIdRef.current = streamId;
578
- activeWordIdxRef.current = -1;
589
+ playStartRef.current = 0;
590
+ for (const t of wordTimersRef.current) clearTimeout(t);
591
+ wordTimersRef.current = [];
579
592
 
580
593
  setPlaying(true);
581
594
  setCurrentWord('');
@@ -616,6 +629,9 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
616
629
  if (streamIdRef.current) {
617
630
  socket.send('tts:cancel', { streamId: streamIdRef.current });
618
631
  }
632
+ for (const t of wordTimersRef.current) clearTimeout(t);
633
+ wordTimersRef.current = [];
634
+ playStartRef.current = 0;
619
635
  unsubAll();
620
636
  socket.release();
621
637
  setPlaying(false);