ugly-app 0.1.291 → 0.1.293

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/CLAUDE.md ADDED
@@ -0,0 +1,37 @@
1
+ # ugly-app framework
2
+
3
+ ## E2E testing rules
4
+
5
+ **NEVER claim a fix works without running the full E2E test suite.** Every change to template pages, server logic, socket handlers, or proxy code MUST be verified by running `E2E=1 npx vitest run tests/cli/e2e-integration.test.ts` with ugly.bot running.
6
+
7
+ ### Before declaring a fix complete:
8
+ 1. Start ugly.bot: `cd ../app && npm run dev` (or background it)
9
+ 2. Build: `npm run build`
10
+ 3. Run the full E2E suite: `E2E=1 npx vitest run tests/cli/e2e-integration.test.ts`
11
+ 4. ALL tests must pass — no exceptions, no "acceptable timeouts", no skipped assertions
12
+ 5. If a test doesn't exist for the feature you changed, ADD one that exercises the real user flow through Playwright
13
+
14
+ ### What counts as E2E testing:
15
+ - Playwright navigating to the actual page, clicking buttons, filling inputs, and verifying visible results
16
+ - Real WebSocket connections to ugly.bot (not mocked)
17
+ - Real file uploads through the S3 proxy to MinIO
18
+ - Real AI text generation through ugly.bot
19
+ - Real audio streaming (STT/TTS) through ugly.bot WebSocket
20
+
21
+ ### What does NOT count:
22
+ - Raw WebSocket protocol tests that bypass the UI
23
+ - Tests that accept errors/timeouts as "acceptable outcomes"
24
+ - Tests that only check server logs without verifying client-side behavior
25
+ - Claiming "the code looks correct" without running it
26
+
27
+ ## Commands
28
+ - `npm run build` — Build TypeScript to dist
29
+ - `npm run dev` — Start dev server (requires ugly.bot tunnel)
30
+ - `E2E=1 npx vitest run tests/cli/e2e-integration.test.ts` — Run full E2E suite (requires ugly.bot at localhost:3000)
31
+ - `npx vitest run` — Run unit tests (no infra needed for most)
32
+
33
+ ## Architecture
34
+ - `src/` — Framework source (server, client, CLI, shared)
35
+ - `templates/` — Scaffolded project template (copied to new projects via `ugly-app init`)
36
+ - `tests/cli/e2e-integration.test.ts` — Full E2E test suite (31 tests covering all template test pages)
37
+ - All infra (Postgres, NATS, S3, Qdrant) goes through the dev tunnel to ugly.bot — never connect directly
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.291";
1
+ export declare const CLI_VERSION = "0.1.293";
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.291";
2
+ export const CLI_VERSION = "0.1.293";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/server/App.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/server/App.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EACV,qBAAqB,EAErB,cAAc,EACd,OAAO,EACP,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAY,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EAGL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAanB,OAAO,EACL,SAAS,EAIT,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AASrB,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,CAAC;AAMvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,CAAC;IAEpB,UAAU,CAAC,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC;;;OAGG;IAEH,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC7C;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7C,kBAAkB,CAChB,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAChE,IAAI,CAAC;IAER,uBAAuB,CACrB,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAChE,IAAI,CAAC;IAER,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAKzC,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAEhD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,qDAAqD;IACrD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oFAAoF;IACpF,WAAW,CACT,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,GACrE,IAAI,CAAC;IACR,oDAAoD;IACpD,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtE;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,IAAI,CAAC;IACR;;;;OAIG;IACH,gBAAgB,CACd,OAAO,EAAE,CACP,GAAG,EAAE,OAAO,SAAS,EAAE,OAAO,EAC9B,GAAG,EAAE,OAAO,SAAS,EAAE,QAAQ,KAC5B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxB,IAAI,CAAC;IACR,4EAA4E;IAE5E,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACrD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClE;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,gBAAgB,EACrC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,IAAI,CAAC;CACT;AAED,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAE,SAAQ,SAAS;IACrG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IAC5C,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,iFAAiF;IACjF,GAAG,EAAE,eAAe,CAAC;CACtB;AAED,wBAAgB,SAAS,CACvB,CAAC,SAAS,eAAe,EACzB,IAAI,SAAS,qBAAqB,EAElC,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACjD,OAAO,EAAE,IAAI,EACb,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,EACnD,cAAc,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,GACpC,GAAG,CAAC,aAAa,CAAC,OAAO,YAAY,GAAG,IAAI,CAAC,CAAC,CA2xBhD"}
@@ -45,7 +45,15 @@ export function createApp(registry, requests, appDefs, configure, deleteHandlers
45
45
  }
46
46
  const storage = createStorageClient();
47
47
  const expressApp = express();
48
- expressApp.use(express.json({ limit: '100mb' }));
48
+ // Skip JSON body parsing for S3 upload proxy routes (they use express.raw() inline)
49
+ expressApp.use((req, res, next) => {
50
+ if (req.method === 'PUT' && req.url.startsWith('/_s3/')) {
51
+ next();
52
+ }
53
+ else {
54
+ express.json({ limit: '100mb' })(req, res, next);
55
+ }
56
+ });
49
57
  const httpServer = createServer(expressApp);
50
58
  // Mutable config state (set by configurator)
51
59
  let authProvider = uglyBotAuthProvider;
@@ -297,15 +305,26 @@ export function createApp(registry, requests, appDefs, configure, deleteHandlers
297
305
  const s3Endpoint = process.env['MINIO_ENDPOINT'] ?? 'http://localhost:9000';
298
306
  const s3Path = req.originalUrl.replace('/_s3', '');
299
307
  const s3Url = `${s3Endpoint}${s3Path}`;
308
+ console.log(`[App] S3 proxy: url=${s3Url.slice(0, 200)} body=${Buffer.isBuffer(req.body) ? req.body.length : typeof req.body}B`);
300
309
  try {
301
- const headers = {};
310
+ const body = req.body;
311
+ // Only forward content-type and content-length — do NOT forward Authorization
312
+ // or other headers, since the presigned URL already contains S3 auth in query params.
313
+ // Sending both causes MinIO to reject with "multiple authentication types".
314
+ const headers = {
315
+ 'content-length': String(body.length),
316
+ };
302
317
  if (req.headers['content-type'])
303
318
  headers['content-type'] = req.headers['content-type'];
304
319
  const s3Res = await fetch(s3Url, {
305
320
  method: 'PUT',
306
321
  headers,
307
- body: req.body,
322
+ body: new Uint8Array(body.buffer, body.byteOffset, body.byteLength),
308
323
  });
324
+ if (!s3Res.ok) {
325
+ const errorBody = await s3Res.text().catch(() => '');
326
+ console.error(`[App] S3 proxy PUT failed: ${s3Res.status} body=${errorBody.slice(0, 500)}`);
327
+ }
309
328
  // Forward S3 response status and headers
310
329
  s3Res.headers.forEach((value, key) => {
311
330
  res.setHeader(key, value);
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/server/App.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/server/App.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PushSend.d.ts","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAG5E"}
1
+ {"version":3,"file":"PushSend.d.ts","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ5E"}
@@ -4,7 +4,12 @@ import { uglyBotRequest } from './uglyBotProxy.js';
4
4
  * Returns { sent: true } if the notification was delivered to at least one device.
5
5
  */
6
6
  export async function pushSend(input) {
7
- const result = await uglyBotRequest('pushSend', input);
7
+ // Include the project's base URL so ugly.bot can construct absolute click URLs
8
+ const baseUrl = process.env['PROJECT_URL'] ?? `http://localhost:${process.env['PORT'] ?? '4321'}`;
9
+ const result = await uglyBotRequest('pushSend', {
10
+ ...input,
11
+ baseUrl,
12
+ });
8
13
  return { sent: !!result.sent };
9
14
  }
10
15
  //# sourceMappingURL=PushSend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PushSend.js","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkBnD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAoB;IACjD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAqB,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3E,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"PushSend.js","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkBnD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAoB;IACjD,+EAA+E;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,oBAAoB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;IAClG,MAAM,MAAM,GAAG,MAAM,cAAc,CAAqB,UAAU,EAAE;QAClE,GAAG,KAAK;QACR,OAAO;KACR,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.291",
3
+ "version": "0.1.293",
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.291";
2
+ export const CLI_VERSION = "0.1.293";
package/src/server/App.ts CHANGED
@@ -206,7 +206,14 @@ export function createApp<
206
206
  }
207
207
  const storage = createStorageClient();
208
208
  const expressApp = express();
209
- expressApp.use(express.json({ limit: '100mb' }));
209
+ // Skip JSON body parsing for S3 upload proxy routes (they use express.raw() inline)
210
+ expressApp.use((req, res, next) => {
211
+ if (req.method === 'PUT' && req.url.startsWith('/_s3/')) {
212
+ next();
213
+ } else {
214
+ express.json({ limit: '100mb' })(req, res, next);
215
+ }
216
+ });
210
217
  const httpServer = createServer(expressApp);
211
218
 
212
219
  // Mutable config state (set by configurator)
@@ -545,17 +552,29 @@ export function createApp<
545
552
  const s3Endpoint = process.env['MINIO_ENDPOINT'] ?? 'http://localhost:9000';
546
553
  const s3Path = req.originalUrl.replace('/_s3', '');
547
554
  const s3Url = `${s3Endpoint}${s3Path}`;
555
+ console.log(`[App] S3 proxy: url=${s3Url.slice(0, 200)} body=${Buffer.isBuffer(req.body) ? req.body.length : typeof req.body}B`);
548
556
 
549
557
  try {
550
- const headers: Record<string, string> = {};
558
+ const body = req.body as Buffer;
559
+ // Only forward content-type and content-length — do NOT forward Authorization
560
+ // or other headers, since the presigned URL already contains S3 auth in query params.
561
+ // Sending both causes MinIO to reject with "multiple authentication types".
562
+ const headers: Record<string, string> = {
563
+ 'content-length': String(body.length),
564
+ };
551
565
  if (req.headers['content-type']) headers['content-type'] = req.headers['content-type'];
552
566
 
553
567
  const s3Res = await fetch(s3Url, {
554
568
  method: 'PUT',
555
569
  headers,
556
- body: req.body as unknown as BodyInit,
570
+ body: new Uint8Array(body.buffer, body.byteOffset, body.byteLength) as unknown as BodyInit,
557
571
  });
558
572
 
573
+ if (!s3Res.ok) {
574
+ const errorBody = await s3Res.text().catch(() => '');
575
+ console.error(`[App] S3 proxy PUT failed: ${s3Res.status} body=${errorBody.slice(0, 500)}`);
576
+ }
577
+
559
578
  // Forward S3 response status and headers
560
579
  s3Res.headers.forEach((value, key) => {
561
580
  res.setHeader(key, value);
@@ -21,6 +21,11 @@ export interface PushSendResult {
21
21
  * Returns { sent: true } if the notification was delivered to at least one device.
22
22
  */
23
23
  export async function pushSend(input: PushSendInput): Promise<PushSendResult> {
24
- const result = await uglyBotRequest<{ sent?: boolean }>('pushSend', input);
24
+ // Include the project's base URL so ugly.bot can construct absolute click URLs
25
+ const baseUrl = process.env['PROJECT_URL'] ?? `http://localhost:${process.env['PORT'] ?? '4321'}`;
26
+ const result = await uglyBotRequest<{ sent?: boolean }>('pushSend', {
27
+ ...input,
28
+ baseUrl,
29
+ });
25
30
  return { sent: !!result.sent };
26
31
  }
@@ -491,7 +491,7 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
491
491
  const streamIdRef = useRef<string | null>(null);
492
492
  const playStartRef = useRef(0);
493
493
  const pendingWordsRef = useRef<Array<{ word: string; idx?: number; startMs?: number }>>([]);
494
- const wordTimersRef = useRef<ReturnType<typeof setTimeout>[]>([]);
494
+ const wordTimersRef = useRef<Array<{ timer: ReturnType<typeof setTimeout>; word: string; idx: number | undefined; startMs: number | undefined }>>([]);
495
495
  const unsubsRef = useRef<Array<() => void>>([]);
496
496
 
497
497
  function addLog(msg: string, kind: LogEntry['kind'] = 'info') {
@@ -506,25 +506,32 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
506
506
  unsubsRef.current = [];
507
507
  }
508
508
 
509
+ function applyWord(word: string, idx: number | undefined) {
510
+ setCurrentWord(word);
511
+ if (typeof idx === 'number') {
512
+ addLog(`Highlight word[${idx}]="${word}"`, 'ok');
513
+ setWordHistory((prev) => {
514
+ const next = prev.map((w) => ({ ...w, active: false }));
515
+ if (idx < next.length) {
516
+ next[idx] = { ...next[idx]!, active: true };
517
+ }
518
+ return next;
519
+ });
520
+ }
521
+ }
522
+
509
523
  function scheduleWord(word: string, idx: number | undefined, startMs: number | undefined) {
510
- const apply = () => {
511
- setCurrentWord(word);
512
- if (typeof idx === 'number') {
513
- setWordHistory((prev) => {
514
- const next = prev.map((w) => ({ ...w, active: false }));
515
- if (idx < next.length) {
516
- next[idx] = { ...next[idx]!, active: true };
517
- }
518
- return next;
519
- });
520
- }
521
- };
522
- const delay = typeof startMs === 'number' ? startMs - (Date.now() - playStartRef.current) : 0;
524
+ const delay = typeof startMs === 'number' && playStartRef.current
525
+ ? startMs - (Date.now() - playStartRef.current)
526
+ : 0;
523
527
  if (delay > 10) {
524
- const timer = setTimeout(apply, delay);
525
- wordTimersRef.current.push(timer);
528
+ const timer = setTimeout(() => {
529
+ applyWord(word, idx);
530
+ wordTimersRef.current = wordTimersRef.current.filter((t) => t.timer !== timer);
531
+ }, delay);
532
+ wordTimersRef.current.push({ timer, word, idx, startMs });
526
533
  } else {
527
- apply();
534
+ applyWord(word, idx);
528
535
  }
529
536
  }
530
537
 
@@ -569,20 +576,43 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
569
576
  socket.on('tts:done', (data) => {
570
577
  addLog(`Got tts:done streamId=${data.streamId}`);
571
578
  if (data.streamId !== streamId) return;
572
- for (const t of wordTimersRef.current) clearTimeout(t);
573
- wordTimersRef.current = [];
579
+
580
+ // Flush any words that were never scheduled (arrived before first audio chunk)
581
+ for (const w of pendingWordsRef.current) {
582
+ scheduleWord(w.word, w.idx, w.startMs);
583
+ }
574
584
  pendingWordsRef.current = [];
575
- playStartRef.current = 0;
576
- setPlaying(false);
577
- setCurrentWord('');
578
- addLog('Playback complete', 'ok');
579
- unsubAll();
580
- socket.release();
585
+
586
+ const finish = () => {
587
+ playStartRef.current = 0;
588
+ setPlaying(false);
589
+ setCurrentWord('');
590
+ addLog('Playback complete', 'ok');
591
+ unsubAll();
592
+ socket.release();
593
+ };
594
+
595
+ // Wait for all word timers to fire naturally before finishing
596
+ if (wordTimersRef.current.length > 0) {
597
+ // Find the max remaining delay across all pending word timers
598
+ const elapsed = playStartRef.current ? Date.now() - playStartRef.current : 0;
599
+ let maxRemainingMs = 0;
600
+ for (const t of wordTimersRef.current) {
601
+ if (typeof t.startMs === 'number') {
602
+ const remaining = t.startMs - elapsed;
603
+ if (remaining > maxRemainingMs) maxRemainingMs = remaining;
604
+ }
605
+ }
606
+ // Schedule finish after all words have fired (+ small buffer)
607
+ setTimeout(finish, maxRemainingMs + 100);
608
+ } else {
609
+ finish();
610
+ }
581
611
  }),
582
612
  socket.on('tts:error', (data) => {
583
613
  addLog(`Got tts:error streamId=${data.streamId} msg=${data.message}`, 'err');
584
614
  if (data.streamId !== streamId) return;
585
- for (const t of wordTimersRef.current) clearTimeout(t);
615
+ for (const t of wordTimersRef.current) clearTimeout(t.timer);
586
616
  wordTimersRef.current = [];
587
617
  pendingWordsRef.current = [];
588
618
  playStartRef.current = 0;
@@ -600,7 +630,7 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
600
630
  streamIdRef.current = streamId;
601
631
  playStartRef.current = 0;
602
632
  pendingWordsRef.current = [];
603
- for (const t of wordTimersRef.current) clearTimeout(t);
633
+ for (const t of wordTimersRef.current) clearTimeout(t.timer);
604
634
  wordTimersRef.current = [];
605
635
 
606
636
  setPlaying(true);
@@ -642,7 +672,7 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
642
672
  if (streamIdRef.current) {
643
673
  socket.send('tts:cancel', { streamId: streamIdRef.current });
644
674
  }
645
- for (const t of wordTimersRef.current) clearTimeout(t);
675
+ for (const t of wordTimersRef.current) clearTimeout(t.timer);
646
676
  wordTimersRef.current = [];
647
677
  pendingWordsRef.current = [];
648
678
  playStartRef.current = 0;
@@ -713,6 +743,8 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
713
743
  {wordHistory.map((w, i) => (
714
744
  <span
715
745
  key={i}
746
+ data-word-index={i}
747
+ data-active={w.active ? 'true' : 'false'}
716
748
  style={{
717
749
  padding: '2px 4px',
718
750
  borderRadius: 4,
@@ -3,7 +3,7 @@ import { Button, Card, Input, PageLayout, Text, useApp } from 'ugly-app/client';
3
3
 
4
4
  interface ChatMessage {
5
5
  id: string;
6
- userId: string;
6
+ role: 'user' | 'assistant';
7
7
  text: string;
8
8
  created: number;
9
9
  }
@@ -20,7 +20,7 @@ function fmt(ms: number): string {
20
20
 
21
21
  export default function ChatTestPage(): React.ReactElement {
22
22
  const { socket } = useApp();
23
- const [conversationId, setConversationId] = useState('test-conv-1');
23
+ const [conversationId] = useState('test-conv-1');
24
24
  const [message, setMessage] = useState('');
25
25
  const [messages, setMessages] = useState<ChatMessage[]>([]);
26
26
  const [streaming, setStreaming] = useState('');
@@ -36,14 +36,45 @@ export default function ChatTestPage(): React.ReactElement {
36
36
  setLogs((prev) => [...prev, { ts: Date.now(), msg, kind }]);
37
37
  }
38
38
 
39
- // Subscribe to conversation events via individual typed listeners
39
+ // Auto-subscribe on mount
40
+ useEffect(() => {
41
+ let cancelled = false;
42
+ const doSubscribe = async () => {
43
+ const started = Date.now();
44
+ addLog(`Subscribing to conversation: ${conversationId}`);
45
+ try {
46
+ await (socket.send as (type: string, data: object) => Promise<unknown>)('conv:subscribe', { conversationId });
47
+ if (!cancelled) {
48
+ setSubscribed(true);
49
+ addLog(`Subscribed in ${fmt(Date.now() - started)}`, 'ok');
50
+ }
51
+ } catch (err) {
52
+ if (!cancelled) {
53
+ addLog(`Subscribe failed: ${err instanceof Error ? err.message : String(err)}`, 'err');
54
+ }
55
+ }
56
+ };
57
+ void doSubscribe();
58
+ return () => {
59
+ cancelled = true;
60
+ (socket.send as (type: string, data: object) => Promise<unknown>)('conv:unsubscribe', { conversationId }).catch(() => {});
61
+ };
62
+ }, [socket, conversationId]);
63
+
64
+ // Listen for conversation events
40
65
  useEffect(() => {
41
66
  const unsubs: Array<() => void> = [];
42
67
 
43
68
  unsubs.push(socket.on('conv:message' as never, ((data: Record<string, unknown>) => {
44
- const m = data as unknown as { conversationId: string; messageId: string; userId: string; text: string; created: number };
45
- setMessages((prev) => [...prev, { id: m.messageId, userId: m.userId, text: m.text, created: m.created }]);
46
- setStreaming('');
69
+ const m = data as { conversationId: string; messageId: string; userId: string; text: string; created: number };
70
+ if (m.conversationId !== conversationId) return;
71
+ const role = m.userId === 'ai' ? 'assistant' as const : 'user' as const;
72
+ setMessages((prev) => {
73
+ // Deduplicate by id (broadcast may send the message twice via NATS round-trip)
74
+ if (prev.some((p) => p.id === m.messageId)) return prev;
75
+ return [...prev, { id: m.messageId, role, text: m.text, created: m.created }];
76
+ });
77
+ if (role === 'assistant') setStreaming('');
47
78
  }) as never));
48
79
 
49
80
  unsubs.push(socket.on('conv:ai-stream-start' as never, (() => {
@@ -63,37 +94,13 @@ export default function ChatTestPage(): React.ReactElement {
63
94
  }) as never));
64
95
 
65
96
  return () => { for (const unsub of unsubs) unsub(); };
66
- }, [socket]);
97
+ }, [socket, conversationId]);
67
98
 
68
99
  // Auto-scroll to bottom
69
100
  useEffect(() => {
70
101
  messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
71
102
  }, [messages, streaming]);
72
103
 
73
- async function handleSubscribe(): Promise<void> {
74
- const started = Date.now();
75
- addLog(`Subscribing to conversation: ${conversationId}`);
76
- try {
77
- await (socket.send as (type: string, data: object) => Promise<unknown>)('conv:subscribe', { conversationId });
78
- setSubscribed(true);
79
- addLog(`Subscribed in ${fmt(Date.now() - started)}`, 'ok');
80
- } catch (err) {
81
- addLog(`Subscribe failed: ${err instanceof Error ? err.message : String(err)}`, 'err');
82
- }
83
- }
84
-
85
- async function handleUnsubscribe(): Promise<void> {
86
- try {
87
- await (socket.send as (type: string, data: object) => Promise<unknown>)('conv:unsubscribe', { conversationId });
88
- setSubscribed(false);
89
- setMessages([]);
90
- setStreaming('');
91
- addLog('Unsubscribed', 'ok');
92
- } catch (err) {
93
- addLog(`Unsubscribe failed: ${err instanceof Error ? err.message : String(err)}`, 'err');
94
- }
95
- }
96
-
97
104
  async function handleSend(): Promise<void> {
98
105
  if (!message.trim() || !subscribed) return;
99
106
  setLoading(true);
@@ -125,32 +132,11 @@ export default function ChatTestPage(): React.ReactElement {
125
132
  <div>
126
133
  <h1>Chat Test</h1>
127
134
 
128
- {/* Connection controls */}
135
+ {/* Connection status */}
129
136
  <Card>
130
- <div style={{ display: 'flex', gap: 8, alignItems: 'flex-end' }}>
131
- <div style={{ flex: 1 }}>
132
- <Input
133
- label="Conversation ID"
134
- value={conversationId}
135
- onChange={setConversationId}
136
- placeholder="test-conv-1"
137
- />
138
- </div>
139
- {!subscribed ? (
140
- <Button data-id="chat-subscribe" onClick={() => { void handleSubscribe(); }}>
141
- Subscribe
142
- </Button>
143
- ) : (
144
- <Button data-id="chat-unsubscribe" onClick={() => { void handleUnsubscribe(); }}>
145
- Unsubscribe
146
- </Button>
147
- )}
148
- </div>
149
- {subscribed && (
150
- <Text size="sm" style={{ marginTop: 4, opacity: 0.6 }}>
151
- Connected to: {conversationId}
152
- </Text>
153
- )}
137
+ <Text size="sm" style={{ opacity: 0.6 }}>
138
+ {subscribed ? `Connected to: ${conversationId}` : 'Connecting…'}
139
+ </Text>
154
140
  </Card>
155
141
 
156
142
  {/* Messages */}
@@ -169,23 +155,23 @@ export default function ChatTestPage(): React.ReactElement {
169
155
  >
170
156
  {messages.length === 0 && !streaming && (
171
157
  <Text size="sm" style={{ opacity: 0.4, textAlign: 'center', marginTop: 40 }}>
172
- {subscribed ? 'No messages yet — send one below' : 'Subscribe to a conversation to start'}
158
+ {subscribed ? 'No messages yet — send one below' : 'Connecting…'}
173
159
  </Text>
174
160
  )}
175
161
  {messages.map((m) => (
176
162
  <div
177
163
  key={m.id}
178
- data-role={m.userId === 'ai' ? 'assistant' : 'user'}
164
+ data-role={m.role}
179
165
  style={{
180
- alignSelf: m.userId === 'ai' ? 'flex-start' : 'flex-end',
166
+ alignSelf: m.role === 'assistant' ? 'flex-start' : 'flex-end',
181
167
  maxWidth: '80%',
182
168
  padding: '8px 12px',
183
169
  borderRadius: 12,
184
- background: m.userId === 'ai' ? 'rgba(255,255,255,0.08)' : 'rgba(80,140,255,0.2)',
170
+ background: m.role === 'assistant' ? 'rgba(255,255,255,0.08)' : 'rgba(80,140,255,0.2)',
185
171
  }}
186
172
  >
187
173
  <Text size="xs" style={{ opacity: 0.5 }}>
188
- {m.userId === 'ai' ? 'AI' : 'You'}
174
+ {m.role === 'assistant' ? 'AI' : 'You'}
189
175
  </Text>
190
176
  <Text size="sm">{m.text}</Text>
191
177
  </div>
@@ -217,7 +203,7 @@ export default function ChatTestPage(): React.ReactElement {
217
203
  label="Message"
218
204
  value={message}
219
205
  onChange={setMessage}
220
- placeholder={subscribed ? 'Type a message…' : 'Subscribe first'}
206
+ placeholder={subscribed ? 'Type a message…' : 'Connecting…'}
221
207
  />
222
208
  </div>
223
209
  <Button
@@ -234,8 +220,8 @@ export default function ChatTestPage(): React.ReactElement {
234
220
  <Card>
235
221
  <h2>How it works</h2>
236
222
  <ol>
237
- <li><code>socket.send(&apos;conv:subscribe&apos;, &#123; conversationId &#125;)</code> joins a conversation channel</li>
238
- <li><code>socket.send(&apos;conv:ai-message&apos;, &#123; conversationId, text &#125;)</code> sends a message and triggers AI response</li>
223
+ <li>Page auto-subscribes to conversation <code>{conversationId}</code> on mount</li>
224
+ <li><code>conv:ai-message</code> sends your text and triggers an AI response</li>
239
225
  <li>AI responses stream back via <code>conv:ai-stream-chunk</code> messages</li>
240
226
  <li>Final messages are broadcast as <code>conv:message</code> to all subscribers</li>
241
227
  <li>Server-side: use <code>enableConversations(configurator, config)</code> in your server setup</li>
@@ -80,23 +80,32 @@ export default function CollabTestPage(): React.ReactElement {
80
80
  return () => { unsubAll(); };
81
81
  }, [socket]);
82
82
 
83
- async function handleConnect(): Promise<void> {
84
- if (!docId.trim()) return;
85
- setLoading(true);
86
- const started = Date.now();
87
- setLogs([]);
88
- addLog(`Connecting to document: ${docId}`);
89
-
90
- try {
91
- await (socket.send as (type: string, data: object) => Promise<unknown>)('collab:join', { docId });
92
- setConnected(true);
93
- addLog(`Connected in ${fmt(Date.now() - started)}`, 'ok');
94
- } catch (err) {
95
- addLog(`Connect failed: ${err instanceof Error ? err.message : String(err)}`, 'err');
96
- } finally {
97
- setLoading(false);
98
- }
99
- }
83
+ // Auto-connect on mount
84
+ useEffect(() => {
85
+ let cancelled = false;
86
+ const doConnect = async () => {
87
+ if (!docId.trim()) return;
88
+ setLoading(true);
89
+ const started = Date.now();
90
+ addLog(`Connecting to document: ${docId}`);
91
+ try {
92
+ await (socket.send as (type: string, data: object) => Promise<unknown>)('collab:join', { docId });
93
+ if (!cancelled) {
94
+ setConnected(true);
95
+ addLog(`Connected in ${fmt(Date.now() - started)}`, 'ok');
96
+ }
97
+ } catch (err) {
98
+ if (!cancelled) addLog(`Connect failed: ${err instanceof Error ? err.message : String(err)}`, 'err');
99
+ } finally {
100
+ if (!cancelled) setLoading(false);
101
+ }
102
+ };
103
+ void doConnect();
104
+ return () => {
105
+ cancelled = true;
106
+ (socket.emit as (type: string, data: object) => void)('collab:leave', { docId });
107
+ };
108
+ }, [socket, docId]); // eslint-disable-line react-hooks/exhaustive-deps
100
109
 
101
110
  function handleDisconnect(): void {
102
111
  (socket.emit as (type: string, data: object) => void)('collab:leave', { docId });
@@ -143,23 +152,14 @@ export default function CollabTestPage(): React.ReactElement {
143
152
  <div>
144
153
  <h1>Collab Test</h1>
145
154
 
146
- {/* Connection controls */}
155
+ {/* Connection status */}
147
156
  <Card>
148
- <div style={{ display: 'flex', gap: 8, alignItems: 'flex-end' }}>
149
- <div style={{ flex: 1 }}>
150
- <Input
151
- label="Document ID"
152
- value={docId}
153
- onChange={setDocId}
154
- placeholder="test-doc-1"
155
- />
156
- </div>
157
- {!connected ? (
158
- <Button data-id="collab-connect" onClick={() => { void handleConnect(); }} disabled={loading || !docId.trim()}>
159
- {loading ? 'Connecting…' : 'Connect'}
160
- </Button>
161
- ) : (
162
- <Button data-id="collab-disconnect" onClick={() => { void handleDisconnect(); }}>
157
+ <div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>
158
+ <Text size="sm" style={{ flex: 1, opacity: 0.6 }}>
159
+ {connected ? `Connected to: ${docId}` : loading ? 'Connecting…' : 'Waiting for connection…'}
160
+ </Text>
161
+ {connected && (
162
+ <Button data-id="collab-disconnect" onClick={() => { handleDisconnect(); }}>
163
163
  Disconnect
164
164
  </Button>
165
165
  )}