ugly-app 0.1.281 → 0.1.282

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.281";
1
+ export declare const CLI_VERSION = "0.1.282";
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.281";
2
+ export const CLI_VERSION = "0.1.282";
3
3
  //# sourceMappingURL=version.js.map
@@ -44,8 +44,6 @@ export interface AppSocket<R extends AppRegistryBase> {
44
44
  send<K extends keyof R['messages']>(type: K, data: MessageData<R['messages'][K]>, timeout?: number): Promise<MessageResponse<R['messages'][K]>>;
45
45
  /** Subscribe to a message type. Returns unsubscribe. */
46
46
  on<K extends keyof R['messages']>(event: K, handler: (data: MessageData<R['messages'][K]>) => void): Unsubscribe;
47
- /** Send a raw object (framework streaming). */
48
- rawSend(msg: object): void;
49
47
  waitForConnection(timeout?: number): Promise<void>;
50
48
  readonly connectionState: ConnectionState;
51
49
  disconnect(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"createSocket.d.ts","sourceRoot":"","sources":["../../src/client/createSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEpF,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,WAAW,GACX,cAAc,GACd,cAAc,GACd,mBAAmB,CAAC;AAExB,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAC9B,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE1C,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,eAAe;IAClD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,CAAC,EACnC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9E,OAAO,CAAC,CAAC,SAAS,QAAQ,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EACzB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAC1B,WAAW,CAAC;IACf,SAAS,CAAC,CAAC,SAAS,QAAQ,EAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EACD,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,GACrB,WAAW,CAAC;IACf,IAAI,CAAC,CAAC,SAAS,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;SAAE,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EACD,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,GACrB,WAAW,CAAC;IACf,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,oDAAoD;IACpD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,CAAC,EAChC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,IAAI,CAAC;IACR,2CAA2C;IAC3C,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,CAAC,EAChC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,wDAAwD;IACxD,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,CAAC,EAC9B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACrD,WAAW,CAAC;IACf,+CAA+C;IAC/C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,eAAe;IAC5D,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;oFACgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,KAAK,IAAI,CAAC;IACX,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EACpD,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,SAAS,CAAC,CAAC,CAAC,CAomBd"}
1
+ {"version":3,"file":"createSocket.d.ts","sourceRoot":"","sources":["../../src/client/createSocket.ts"],"names":[],"mappings":"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"}
@@ -460,9 +460,6 @@ export function createSocket(opts) {
460
460
  typedListeners.delete(event);
461
461
  };
462
462
  },
463
- rawSend(msg) {
464
- enqueueOrSend(JSON.stringify(msg));
465
- },
466
463
  waitForConnection(timeout = 30000) {
467
464
  if (isConnected)
468
465
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"createSocket.js","sourceRoot":"","sources":["../../src/client/createSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSocket.js","sourceRoot":"","sources":["../../src/client/createSocket.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ export interface EmailOptions {
2
2
  to: string;
3
3
  subject: string;
4
4
  html: string;
5
- from?: string;
5
+ /** Optional tag — ugly.bot sends from `<projectId>+<id>@ugly.bot`, or `<projectId>@ugly.bot` when omitted */
6
+ id?: string | undefined;
6
7
  replyTo?: string;
7
8
  headers?: Record<string, string>;
8
9
  }
@@ -14,19 +15,17 @@ export interface EmailOptions {
14
15
  */
15
16
  export declare function emailSend(options: EmailOptions): Promise<void>;
16
17
  /**
17
- * Create a scoped email sender for an app domain.
18
+ * Create a scoped email sender.
18
19
  *
19
- * Sends from `{domain}@ugly.bot` by default, or `{domain}+{id}@ugly.bot`
20
- * when an `id` is provided (for reply correlation).
21
- *
22
- * @param domain - The app's registered subdomain (e.g. 'myapp')
20
+ * The `from` tag is optional — ugly.bot infers the full address from the
21
+ * project's identity: `<projectId>@ugly.bot` or `<projectId>+<tag>@ugly.bot`.
23
22
  */
24
- export declare function createEmailSender(domain: string): {
23
+ export declare function createEmailSender(): {
25
24
  send(options: {
26
25
  to: string;
27
26
  subject: string;
28
27
  html: string;
29
- /** Optional tag for reply correlation — becomes the +tag in the from address */
28
+ /** Optional tag for reply correlation — ugly.bot builds the from address */
30
29
  id?: string;
31
30
  replyTo?: string;
32
31
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/server/Email.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM;kBAExB;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,gFAAgF;QAChF,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;EAapB"}
1
+ {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/server/Email.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,6GAA6G;IAC7G,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB;kBAET;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,4EAA4E;QAC5E,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;EAUpB"}
@@ -18,7 +18,7 @@ export async function emailSend(options) {
18
18
  to: options.to,
19
19
  subject: options.subject,
20
20
  html: options.html,
21
- from: options.from,
21
+ id: options.id,
22
22
  replyTo: options.replyTo,
23
23
  headers: options.headers,
24
24
  });
@@ -34,25 +34,20 @@ export async function emailSend(options) {
34
34
  }
35
35
  }
36
36
  /**
37
- * Create a scoped email sender for an app domain.
37
+ * Create a scoped email sender.
38
38
  *
39
- * Sends from `{domain}@ugly.bot` by default, or `{domain}+{id}@ugly.bot`
40
- * when an `id` is provided (for reply correlation).
41
- *
42
- * @param domain - The app's registered subdomain (e.g. 'myapp')
39
+ * The `from` tag is optional — ugly.bot infers the full address from the
40
+ * project's identity: `<projectId>@ugly.bot` or `<projectId>+<tag>@ugly.bot`.
43
41
  */
44
- export function createEmailSender(domain) {
42
+ export function createEmailSender() {
45
43
  return {
46
44
  async send(options) {
47
- const from = options.id
48
- ? `${domain}+${options.id}@ugly.bot`
49
- : `${domain}@ugly.bot`;
50
45
  await emailSend({
51
46
  to: options.to,
52
47
  subject: options.subject,
53
48
  html: options.html,
54
- from,
55
- replyTo: options.replyTo ?? from,
49
+ id: options.id,
50
+ replyTo: options.replyTo,
56
51
  });
57
52
  },
58
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/server/Email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,WAAW,EAAE;YAChC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACnC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAOV;YACC,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE;gBACrB,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,EAAE,WAAW;gBACpC,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC;YACzB,MAAM,SAAS,CAAC;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;aACjC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/server/Email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,WAAW,EAAE;YAChC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACnC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAOV;YACC,MAAM,SAAS,CAAC;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -10,7 +10,7 @@ export declare function loadEmailTemplate<T>(absolutePath: string): CompiledTemp
10
10
  * Render a compiled template with the provided data and send it via sendEmail().
11
11
  */
12
12
  export declare function sendTemplateEmail<T>(to: string, subject: string, template: CompiledTemplate<T>, data: T, options?: {
13
- from?: string;
13
+ id?: string;
14
14
  replyTo?: string;
15
15
  headers?: Record<string, string>;
16
16
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"EmailTemplate.d.ts","sourceRoot":"","sources":["../../src/server/EmailTemplate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,YAAY,EAAE,MAAM,GACnB,gBAAgB,CAAC,CAAC,CAAC,CAMrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACA,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"EmailTemplate.d.ts","sourceRoot":"","sources":["../../src/server/EmailTemplate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,YAAY,EAAE,MAAM,GACnB,gBAAgB,CAAC,CAAC,CAAC,CAMrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACA,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -21,7 +21,7 @@ export async function sendTemplateEmail(to, subject, template, data, options) {
21
21
  to,
22
22
  subject,
23
23
  html,
24
- from: options?.from,
24
+ id: options?.id,
25
25
  replyTo: options?.replyTo,
26
26
  headers: options?.headers,
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EmailTemplate.js","sourceRoot":"","sources":["../../src/server/EmailTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB;IAEpB,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IAC/C,OAAO;QACL,MAAM,EAAE,CAAC,IAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,OAAe,EACf,QAA6B,EAC7B,IAAO,EACP,OAIC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC;QACd,EAAE;QACF,OAAO;QACP,IAAI;QACJ,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"EmailTemplate.js","sourceRoot":"","sources":["../../src/server/EmailTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB;IAEpB,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IAC/C,OAAO;QACL,MAAM,EAAE,CAAC,IAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,OAAe,EACf,QAA6B,EAC7B,IAAO,EACP,OAIC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC;QACd,EAAE;QACF,OAAO;QACP,IAAI;QACJ,EAAE,EAAE,OAAO,EAAE,EAAE;QACf,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC,CAAC;AACL,CAAC"}
@@ -84,7 +84,7 @@ async function sendBillingAlertEmail(to, provider, status, errorText) {
84
84
  const timestamp = new Date().toISOString();
85
85
  const truncatedError = errorText.length > 1000 ? errorText.slice(0, 1000) + '...' : errorText;
86
86
  await emailSend({
87
- from: 'Billing Alerts <alerts@ugly.bot>',
87
+ id: 'billing-alerts',
88
88
  to,
89
89
  subject: `Billing Alert: ${provider} — HTTP ${status}`,
90
90
  html: `
@@ -1 +1 @@
1
- {"version":3,"file":"BillingAlert.js","sourceRoot":"","sources":["../../../src/server/billing/BillingAlert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BillingAlert.js","sourceRoot":"","sources":["../../../src/server/billing/BillingAlert.ts"],"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.281",
3
+ "version": "0.1.282",
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.281";
2
+ export const CLI_VERSION = "0.1.282";
@@ -83,8 +83,6 @@ export interface AppSocket<R extends AppRegistryBase> {
83
83
  event: K,
84
84
  handler: (data: MessageData<R['messages'][K]>) => void,
85
85
  ): Unsubscribe;
86
- /** Send a raw object (framework streaming). */
87
- rawSend(msg: object): void;
88
86
  waitForConnection(timeout?: number): Promise<void>;
89
87
  readonly connectionState: ConnectionState;
90
88
  disconnect(): void;
@@ -698,10 +696,6 @@ export function createSocket<R extends AppRegistryBase>(
698
696
  };
699
697
  },
700
698
 
701
- rawSend(msg: object): void {
702
- enqueueOrSend(JSON.stringify(msg));
703
- },
704
-
705
699
  waitForConnection(timeout = 30000): Promise<void> {
706
700
  if (isConnected) return Promise.resolve();
707
701
  return new Promise((resolve, reject) => {
@@ -4,7 +4,8 @@ export interface EmailOptions {
4
4
  to: string;
5
5
  subject: string;
6
6
  html: string;
7
- from?: string;
7
+ /** Optional tag — ugly.bot sends from `<projectId>+<id>@ugly.bot`, or `<projectId>@ugly.bot` when omitted */
8
+ id?: string | undefined;
8
9
  replyTo?: string;
9
10
  headers?: Record<string, string>;
10
11
  }
@@ -30,7 +31,7 @@ export async function emailSend(options: EmailOptions): Promise<void> {
30
31
  to: options.to,
31
32
  subject: options.subject,
32
33
  html: options.html,
33
- from: options.from,
34
+ id: options.id,
34
35
  replyTo: options.replyTo,
35
36
  headers: options.headers,
36
37
  });
@@ -46,32 +47,27 @@ export async function emailSend(options: EmailOptions): Promise<void> {
46
47
  }
47
48
 
48
49
  /**
49
- * Create a scoped email sender for an app domain.
50
+ * Create a scoped email sender.
50
51
  *
51
- * Sends from `{domain}@ugly.bot` by default, or `{domain}+{id}@ugly.bot`
52
- * when an `id` is provided (for reply correlation).
53
- *
54
- * @param domain - The app's registered subdomain (e.g. 'myapp')
52
+ * The `from` tag is optional — ugly.bot infers the full address from the
53
+ * project's identity: `<projectId>@ugly.bot` or `<projectId>+<tag>@ugly.bot`.
55
54
  */
56
- export function createEmailSender(domain: string) {
55
+ export function createEmailSender() {
57
56
  return {
58
57
  async send(options: {
59
58
  to: string;
60
59
  subject: string;
61
60
  html: string;
62
- /** Optional tag for reply correlation — becomes the +tag in the from address */
61
+ /** Optional tag for reply correlation — ugly.bot builds the from address */
63
62
  id?: string;
64
63
  replyTo?: string;
65
64
  }): Promise<void> {
66
- const from = options.id
67
- ? `${domain}+${options.id}@ugly.bot`
68
- : `${domain}@ugly.bot`;
69
65
  await emailSend({
70
66
  to: options.to,
71
67
  subject: options.subject,
72
68
  html: options.html,
73
- from,
74
- replyTo: options.replyTo ?? from,
69
+ id: options.id,
70
+ replyTo: options.replyTo,
75
71
  });
76
72
  },
77
73
  };
@@ -29,7 +29,7 @@ export async function sendTemplateEmail<T>(
29
29
  template: CompiledTemplate<T>,
30
30
  data: T,
31
31
  options?: {
32
- from?: string;
32
+ id?: string;
33
33
  replyTo?: string;
34
34
  headers?: Record<string, string>;
35
35
  },
@@ -39,7 +39,7 @@ export async function sendTemplateEmail<T>(
39
39
  to,
40
40
  subject,
41
41
  html,
42
- from: options?.from,
42
+ id: options?.id,
43
43
  replyTo: options?.replyTo,
44
44
  headers: options?.headers,
45
45
  });
@@ -114,7 +114,7 @@ async function sendBillingAlertEmail(
114
114
  errorText.length > 1000 ? errorText.slice(0, 1000) + '...' : errorText;
115
115
 
116
116
  await emailSend({
117
- from: 'Billing Alerts <alerts@ugly.bot>',
117
+ id: 'billing-alerts',
118
118
  to,
119
119
  subject: `Billing Alert: ${provider} — HTTP ${status}`,
120
120
  html: `
@@ -16,17 +16,11 @@ import type {
16
16
  AudioVisualizer,
17
17
  BlobStyleType,
18
18
  BlobVisualizerFunctions,
19
+ UglyBotSocket,
19
20
  } from 'ugly-app/client';
20
21
 
21
22
  // ─── Types ───────────────────────────────────────────────────────────────────
22
23
 
23
- /** Raw WebSocket-like interface used by STT/TTS sections for streaming audio. */
24
- interface RawSocket {
25
- send(msg: unknown): void;
26
- on(e: string, h: (m: unknown) => void): void;
27
- off(e: string, h: (m: unknown) => void): void;
28
- }
29
-
30
24
  type Tab = 'stt' | 'tts';
31
25
  type STTMode = 'continuous' | 'push-to-talk';
32
26
 
@@ -256,7 +250,7 @@ function useTTSAnalyzer() {
256
250
 
257
251
  let sttCounter = 0;
258
252
 
259
- function STTSection({ socket }: { socket: RawSocket }) {
253
+ function STTSection({ socket }: { socket: UglyBotSocket }) {
260
254
  const [sttMode, setSTTMode] = useState<STTMode>('continuous');
261
255
  const [vizType, setVizType] = useState<VizType>('mic');
262
256
  const [listening, setListening] = useState(false);
@@ -268,6 +262,7 @@ function STTSection({ socket }: { socket: RawSocket }) {
268
262
  const streamIdRef = useRef<string | null>(null);
269
263
  const recorderRef = useRef<AudioRecorder | null>(null);
270
264
  const chunkCountRef = useRef(0);
265
+ const unsubsRef = useRef<Array<() => void>>([]);
271
266
 
272
267
  function addLog(msg: string, kind: LogEntry['kind'] = 'info') {
273
268
  const prefix = '[STT]';
@@ -276,26 +271,34 @@ function STTSection({ socket }: { socket: RawSocket }) {
276
271
  setLogs((prev) => [...prev, { ts: Date.now(), msg, kind }]);
277
272
  }
278
273
 
279
- const handleMessage = useCallback( // eslint-disable-line react-hooks/exhaustive-deps
280
- (msg: unknown) => {
281
- const m = msg as { type: string; streamId: string; text?: string; isFinal?: boolean; message?: string };
282
- if (m.streamId !== streamIdRef.current) return;
283
- if (m.type === 'stt:transcript') {
284
- addLog(`Transcript${m.isFinal ? ' (final)' : ''}: ${m.text ?? ''}`, m.isFinal ? 'ok' : 'info');
285
- setTranscript(m.text ?? '');
286
- if (m.isFinal && m.text) {
287
- setTranscriptHistory((prev) => [...prev, m.text!]);
274
+ function unsubAll() {
275
+ for (const unsub of unsubsRef.current) unsub();
276
+ unsubsRef.current = [];
277
+ }
278
+
279
+ function subscribe(streamId: string) {
280
+ unsubAll();
281
+ unsubsRef.current.push(
282
+ socket.on('stt:transcript', (data) => {
283
+ if (data.streamId !== streamId) return;
284
+ addLog(`Transcript${data.isFinal ? ' (final)' : ''}: ${data.text ?? ''}`, data.isFinal ? 'ok' : 'info');
285
+ setTranscript(data.text ?? '');
286
+ if (data.isFinal && data.text) {
287
+ setTranscriptHistory((prev) => [...prev, data.text!]);
288
288
  setTranscript('');
289
289
  }
290
- } else if (m.type === 'stt:error') {
291
- addLog(`STT error: ${m.message ?? 'unknown'}`, 'err');
290
+ }),
291
+ socket.on('stt:error', (data) => {
292
+ if (data.streamId !== streamId) return;
293
+ addLog(`STT error: ${data.message ?? 'unknown'}`, 'err');
292
294
  stopListening();
293
- } else if (m.type === 'stt:stopped') {
295
+ }),
296
+ socket.on('stt:stopped', (data) => {
297
+ if (data.streamId !== streamId) return;
294
298
  addLog(`STT stopped — sent ${chunkCountRef.current} audio chunks`, 'ok');
295
- }
296
- },
297
- [],
298
- );
299
+ }),
300
+ );
301
+ }
299
302
 
300
303
  async function startListening() {
301
304
  const streamId = `stt-${++sttCounter}`;
@@ -307,29 +310,30 @@ function STTSection({ socket }: { socket: RawSocket }) {
307
310
  const started = Date.now();
308
311
  addLog(`Mode: ${sttMode}${sttMode === 'continuous' ? ' (VAD enabled)' : ''}`);
309
312
 
310
- socket.on('message', handleMessage);
313
+ await socket.acquire();
314
+ subscribe(streamId);
311
315
 
312
- const startMsg = {
313
- type: 'stt:start' as const,
316
+ socket.send('stt:start', {
314
317
  streamId,
315
- mode: sttMode === 'continuous' ? ('realtime' as const) : ('batch' as const),
318
+ mode: sttMode === 'continuous' ? 'realtime' : 'batch',
316
319
  enableVAD: sttMode === 'continuous',
317
- };
318
- socket.send(startMsg);
320
+ });
319
321
 
320
322
  // Wait for ready
321
323
  await new Promise<void>((resolve) => {
322
- const readyHandler = (msg: unknown) => {
323
- const m = msg as { type: string; streamId: string };
324
- if (m.type === 'stt:ready' && m.streamId === streamId) {
325
- socket.off('message', readyHandler);
324
+ let resolved = false;
325
+ const unsub = socket.on('stt:ready', (data) => {
326
+ if (data.streamId === streamId) {
327
+ resolved = true;
328
+ unsub();
326
329
  resolve();
327
330
  }
328
- };
329
- socket.on('message', readyHandler);
331
+ });
330
332
  setTimeout(() => {
331
- socket.off('message', readyHandler);
332
- resolve();
333
+ if (!resolved) {
334
+ unsub();
335
+ resolve();
336
+ }
333
337
  }, 5000);
334
338
  });
335
339
 
@@ -342,7 +346,7 @@ function STTSection({ socket }: { socket: RawSocket }) {
342
346
  if (!recorderRef.current) recorderRef.current = new AudioRecorder();
343
347
  await recorderRef.current.start((audio) => {
344
348
  chunkCountRef.current++;
345
- socket.send({ type: 'stt:audio', streamId: streamIdRef.current, audio });
349
+ socket.send('stt:audio', { streamId, audio });
346
350
  });
347
351
  addLog('Recording started', 'ok');
348
352
 
@@ -354,9 +358,10 @@ function STTSection({ socket }: { socket: RawSocket }) {
354
358
  recorderRef.current?.stop();
355
359
  mic.stop();
356
360
  if (streamIdRef.current) {
357
- socket.send({ type: 'stt:stop', streamId: streamIdRef.current });
361
+ socket.send('stt:stop', { streamId: streamIdRef.current });
358
362
  }
359
- socket.off('message', handleMessage);
363
+ unsubAll();
364
+ socket.release();
360
365
  setListening(false);
361
366
  }
362
367
 
@@ -374,9 +379,10 @@ function STTSection({ socket }: { socket: RawSocket }) {
374
379
  recorderRef.current?.stop();
375
380
  mic.stop();
376
381
  if (streamIdRef.current) {
377
- socket.send({ type: 'stt:stop', streamId: streamIdRef.current });
382
+ socket.send('stt:stop', { streamId: streamIdRef.current });
378
383
  }
379
- socket.off('message', handleMessage);
384
+ unsubAll();
385
+ socket.release();
380
386
  };
381
387
  }, []);
382
388
 
@@ -477,7 +483,7 @@ function STTSection({ socket }: { socket: RawSocket }) {
477
483
 
478
484
  let ttsCounter = 0;
479
485
 
480
- function TTSSection({ socket }: { socket: RawSocket }) {
486
+ function TTSSection({ socket }: { socket: UglyBotSocket }) {
481
487
  const [text, setText] = useState('');
482
488
  const [voice, setVoice] = useState('');
483
489
  const [vizType, setVizType] = useState<VizType>('wave');
@@ -489,6 +495,7 @@ function TTSSection({ socket }: { socket: RawSocket }) {
489
495
  const ttsAudio = useTTSAnalyzer();
490
496
  const streamIdRef = useRef<string | null>(null);
491
497
  const activeWordIdxRef = useRef(-1);
498
+ const unsubsRef = useRef<Array<() => void>>([]);
492
499
 
493
500
  function addLog(msg: string, kind: LogEntry['kind'] = 'info') {
494
501
  const prefix = '[TTS]';
@@ -497,40 +504,55 @@ function TTSSection({ socket }: { socket: RawSocket }) {
497
504
  setLogs((prev) => [...prev, { ts: Date.now(), msg, kind }]);
498
505
  }
499
506
 
500
- const handleMessage = useCallback( // eslint-disable-line react-hooks/exhaustive-deps
501
- (msg: unknown) => {
502
- const m = msg as { type: string; streamId: string; audio?: string; word?: string; message?: string };
503
- if ((m as { streamId?: string }).streamId !== streamIdRef.current) return;
504
-
505
- if (m.type === 'tts:chunk' && m.audio) {
506
- ttsAudio.playChunk(m.audio);
507
- addLog(`Received audio chunk (${m.audio.length} b64 chars)`);
508
- } else if (m.type === 'tts:word' && m.word) {
509
- setCurrentWord(m.word);
510
- activeWordIdxRef.current++;
511
- const idx = activeWordIdxRef.current;
512
- setWordHistory((prev) => {
513
- const next = prev.map((w) => ({ ...w, active: false }));
514
- if (idx < next.length) {
515
- next[idx] = { ...next[idx]!, active: true };
516
- }
517
- return next;
518
- });
519
- } else if (m.type === 'tts:done') {
507
+ function unsubAll() {
508
+ for (const unsub of unsubsRef.current) unsub();
509
+ unsubsRef.current = [];
510
+ }
511
+
512
+ function subscribe(streamId: string) {
513
+ unsubAll();
514
+ unsubsRef.current.push(
515
+ socket.on('tts:chunk', (data) => {
516
+ if (data.streamId !== streamId) return;
517
+ if (data.audio) {
518
+ ttsAudio.playChunk(data.audio);
519
+ addLog(`Received audio chunk (${data.audio.length} b64 chars)`);
520
+ }
521
+ }),
522
+ socket.on('tts:word', (data) => {
523
+ if (data.streamId !== streamId) return;
524
+ if (data.word) {
525
+ setCurrentWord(data.word);
526
+ activeWordIdxRef.current++;
527
+ const idx = activeWordIdxRef.current;
528
+ setWordHistory((prev) => {
529
+ const next = prev.map((w) => ({ ...w, active: false }));
530
+ if (idx < next.length) {
531
+ next[idx] = { ...next[idx]!, active: true };
532
+ }
533
+ return next;
534
+ });
535
+ }
536
+ }),
537
+ socket.on('tts:done', (data) => {
538
+ if (data.streamId !== streamId) return;
520
539
  setPlaying(false);
521
540
  setCurrentWord('');
522
541
  addLog('Playback complete', 'ok');
523
- socket.off('message', handleMessage);
524
- } else if (m.type === 'tts:error') {
542
+ unsubAll();
543
+ socket.release();
544
+ }),
545
+ socket.on('tts:error', (data) => {
546
+ if (data.streamId !== streamId) return;
525
547
  setPlaying(false);
526
- addLog(`TTS error: ${m.message ?? 'unknown'}`, 'err');
527
- socket.off('message', handleMessage);
528
- }
529
- },
530
- [],
531
- );
548
+ addLog(`TTS error: ${data.message ?? 'unknown'}`, 'err');
549
+ unsubAll();
550
+ socket.release();
551
+ }),
552
+ );
553
+ }
532
554
 
533
- function handlePlay() {
555
+ async function handlePlay() {
534
556
  if (!text.trim()) return;
535
557
  const streamId = `tts-${++ttsCounter}`;
536
558
  streamIdRef.current = streamId;
@@ -548,21 +570,22 @@ function TTSSection({ socket }: { socket: RawSocket }) {
548
570
  addLog(`Voice: ${voice || 'default'}`);
549
571
  addLog('Streaming…');
550
572
 
551
- socket.on('message', handleMessage);
552
- socket.send({
553
- type: 'tts:start',
573
+ await socket.acquire();
574
+ subscribe(streamId);
575
+ socket.send('tts:start', {
554
576
  streamId,
555
577
  text: text.trim(),
556
- voice: voice || undefined,
578
+ ...(voice ? { voice } : {}),
557
579
  requestVisemes: false,
558
580
  });
559
581
  }
560
582
 
561
583
  function handleStop() {
562
584
  if (streamIdRef.current) {
563
- socket.send({ type: 'tts:cancel', streamId: streamIdRef.current });
585
+ socket.send('tts:cancel', { streamId: streamIdRef.current });
564
586
  }
565
- socket.off('message', handleMessage);
587
+ unsubAll();
588
+ socket.release();
566
589
  setPlaying(false);
567
590
  setCurrentWord('');
568
591
  }
@@ -570,9 +593,10 @@ function TTSSection({ socket }: { socket: RawSocket }) {
570
593
  useEffect(() => { // eslint-disable-line react-hooks/exhaustive-deps
571
594
  return () => {
572
595
  if (streamIdRef.current) {
573
- socket.send({ type: 'tts:cancel', streamId: streamIdRef.current });
596
+ socket.send('tts:cancel', { streamId: streamIdRef.current });
574
597
  }
575
- socket.off('message', handleMessage);
598
+ unsubAll();
599
+ socket.release();
576
600
  ttsAudio.close();
577
601
  };
578
602
  }, []);
@@ -665,7 +689,7 @@ function TTSSection({ socket }: { socket: RawSocket }) {
665
689
  // ─── Main Page ───────────────────────────────────────────────────────────────
666
690
 
667
691
  export default function AudioTestPage(): React.ReactElement {
668
- const { socket } = useApp();
692
+ const { uglyBotSocket } = useApp();
669
693
  const [tab, setTab] = useState<Tab>('stt');
670
694
 
671
695
  return (
@@ -695,10 +719,14 @@ export default function AudioTestPage(): React.ReactElement {
695
719
  ))}
696
720
  </div>
697
721
 
698
- {tab === 'stt' ? (
699
- <STTSection socket={socket as unknown as RawSocket} />
722
+ {uglyBotSocket ? (
723
+ tab === 'stt' ? (
724
+ <STTSection socket={uglyBotSocket} />
725
+ ) : (
726
+ <TTSSection socket={uglyBotSocket} />
727
+ )
700
728
  ) : (
701
- <TTSSection socket={socket as unknown as RawSocket} />
729
+ <p>UglyBot socket not available. Make sure the app is configured with an app token.</p>
702
730
  )}
703
731
  </div>
704
732
  </PageLayout>
@@ -165,7 +165,7 @@ await sendEmail({
165
165
  to: 'user@example.com',
166
166
  subject: 'Hello',
167
167
  html: '<p>Hi there!</p>',
168
- from: 'myapp@ugly.bot',
168
+ id: 'thread-123', // optional — becomes <projectId>+thread-123@ugly.bot
169
169
  });
170
170
 
171
171
  // Receive replies:
@@ -9,10 +9,10 @@ interface LogEntry {
9
9
  }
10
10
 
11
11
  export default function PushTestPage(): React.ReactElement {
12
- const { socket } = useApp();
12
+ const { socket, userId } = useApp();
13
13
  const [registered, setRegistered] = useState<boolean | null>(null);
14
14
  const [logs, setLogs] = useState<LogEntry[]>([]);
15
- const [targetUserId, setTargetUserId] = useState('');
15
+ const [targetUserId, setTargetUserId] = useState(userId ?? '');
16
16
  const [title, setTitle] = useState('Test Notification');
17
17
  const [body, setBody] = useState('Hello from ugly-app!');
18
18
  const [loading, setLoading] = useState(false);
@@ -89,9 +89,7 @@ const app = createApp(
89
89
  },
90
90
 
91
91
  sendTestEmail: async (_userId, { to, subject, html, id }) => {
92
- const projectId = process.env['NATS_PREFIX'] ?? 'myapp';
93
- const from = id ? `${projectId}+${id}@ugly.bot` : `${projectId}@ugly.bot`;
94
- await emailSend({ to, subject, html, from, replyTo: from });
92
+ await emailSend({ to, subject, html, id });
95
93
  return { ok: true };
96
94
  },
97
95
  } satisfies RequestHandlers<typeof requests>,