@mentra/sdk 3.0.0-alpha.3 → 3.0.0-alpha.4

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.
@@ -336,113 +336,113 @@ var G2_HYPHEN_WIDTH_PX = 10;
336
336
  var G2_SPACE_WIDTH_PX = 6;
337
337
  // ../display-utils/src/profiles/nex.ts
338
338
  var NEX_GLYPH_WIDTHS = {
339
- " ": 2,
340
- "!": 1,
341
- '"': 2,
342
- "#": 6,
343
- $: 5,
344
- "%": 6,
345
- "&": 7,
346
- "'": 1,
347
- "(": 2,
348
- ")": 2,
349
- "*": 3,
350
- "+": 4,
351
- ",": 1,
352
- "-": 4,
353
- ".": 1,
354
- "/": 3,
355
- "0": 5,
356
- "1": 3,
357
- "2": 5,
358
- "3": 5,
359
- "4": 5,
360
- "5": 5,
361
- "6": 5,
362
- "7": 5,
363
- "8": 5,
364
- "9": 5,
365
- ":": 1,
366
- ";": 1,
367
- "<": 4,
368
- "=": 4,
369
- ">": 4,
370
- "?": 5,
371
- "@": 7,
372
- A: 6,
373
- B: 5,
374
- C: 5,
375
- D: 5,
376
- E: 4,
377
- F: 4,
378
- G: 5,
379
- H: 5,
380
- I: 2,
381
- J: 3,
382
- K: 5,
383
- L: 4,
384
- M: 7,
385
- N: 5,
386
- O: 5,
387
- P: 5,
388
- Q: 5,
389
- R: 5,
390
- S: 5,
391
- T: 5,
392
- U: 5,
393
- V: 6,
394
- W: 7,
395
- X: 6,
396
- Y: 6,
397
- Z: 5,
398
- "[": 2,
399
- "\\": 3,
400
- "]": 2,
401
- "^": 4,
402
- _: 3,
403
- "`": 2,
404
- a: 5,
405
- b: 4,
406
- c: 4,
407
- d: 4,
408
- e: 4,
409
- f: 4,
410
- g: 4,
411
- h: 4,
412
- i: 1,
413
- j: 2,
414
- k: 4,
415
- l: 1,
416
- m: 7,
417
- n: 4,
418
- o: 4,
419
- p: 4,
420
- q: 4,
421
- r: 3,
422
- s: 4,
423
- t: 3,
424
- u: 5,
425
- v: 5,
426
- w: 7,
427
- x: 5,
428
- y: 5,
429
- z: 4,
430
- "{": 3,
431
- "|": 1,
432
- "}": 3,
433
- "~": 7
339
+ " ": 4,
340
+ "!": 3,
341
+ '"': 5,
342
+ "#": 12,
343
+ $: 10,
344
+ "%": 13,
345
+ "&": 12,
346
+ "'": 3,
347
+ "(": 7,
348
+ ")": 7,
349
+ "*": 8,
350
+ "+": 11,
351
+ ",": 5,
352
+ "-": 8,
353
+ ".": 5,
354
+ "/": 8,
355
+ "0": 12,
356
+ "1": 5,
357
+ "2": 11,
358
+ "3": 11,
359
+ "4": 11,
360
+ "5": 11,
361
+ "6": 11,
362
+ "7": 11,
363
+ "8": 11,
364
+ "9": 11,
365
+ ":": 5,
366
+ ";": 5,
367
+ "<": 11,
368
+ "=": 11,
369
+ ">": 11,
370
+ "?": 9,
371
+ "@": 14,
372
+ A: 12,
373
+ B: 12,
374
+ C: 13,
375
+ D: 13,
376
+ E: 11,
377
+ F: 11,
378
+ G: 14,
379
+ H: 13,
380
+ I: 4,
381
+ J: 10,
382
+ K: 10,
383
+ L: 11,
384
+ M: 15,
385
+ N: 13,
386
+ O: 15,
387
+ P: 11,
388
+ Q: 15,
389
+ R: 11,
390
+ S: 11,
391
+ T: 11,
392
+ U: 13,
393
+ V: 12,
394
+ W: 16,
395
+ X: 11,
396
+ Y: 11,
397
+ Z: 11,
398
+ "[": 6,
399
+ "\\": 8,
400
+ "]": 6,
401
+ "^": 11,
402
+ _: 9,
403
+ "`": 11,
404
+ a: 9,
405
+ b: 10,
406
+ c: 9,
407
+ d: 10,
408
+ e: 10,
409
+ f: 6,
410
+ g: 10,
411
+ h: 10,
412
+ i: 3,
413
+ j: 3,
414
+ k: 8,
415
+ l: 3,
416
+ m: 15,
417
+ n: 10,
418
+ o: 10,
419
+ p: 10,
420
+ q: 10,
421
+ r: 6,
422
+ s: 8,
423
+ t: 6,
424
+ u: 10,
425
+ v: 9,
426
+ w: 12,
427
+ x: 8,
428
+ y: 9,
429
+ z: 8,
430
+ "{": 7,
431
+ "|": 5,
432
+ "}": 7,
433
+ "~": 11
434
434
  };
435
435
  var NEX_PROFILE = {
436
436
  id: "mentra-nex",
437
437
  name: "Mentra Nex",
438
- displayWidthPx: 576,
438
+ displayWidthPx: 440,
439
439
  maxLines: 5,
440
- maxPayloadBytes: 390,
440
+ maxPayloadBytes: 226,
441
441
  bleChunkSize: 176,
442
442
  fontMetrics: {
443
443
  glyphWidths: new Map(Object.entries(NEX_GLYPH_WIDTHS)),
444
- defaultGlyphWidth: 7,
445
- renderFormula: (glyphWidth) => (glyphWidth + 1) * 2,
444
+ defaultGlyphWidth: 16,
445
+ renderFormula: (glyphWidth) => glyphWidth,
446
446
  uniformScripts: {
447
447
  cjk: 18,
448
448
  hiragana: 18,
@@ -461,8 +461,8 @@ var NEX_PROFILE = {
461
461
  noEndChars: ["(", "[", "{", "(", "【", "「"]
462
462
  }
463
463
  };
464
- var NEX_HYPHEN_WIDTH_PX = 10;
465
- var NEX_SPACE_WIDTH_PX = 6;
464
+ var NEX_HYPHEN_WIDTH_PX = 8;
465
+ var NEX_SPACE_WIDTH_PX = 4;
466
466
  // ../display-utils/src/measurer/script-detection.ts
467
467
  var SCRIPT_RANGES = {
468
468
  cjk: [
@@ -1611,4 +1611,4 @@ export {
1611
1611
  ColumnComposer
1612
1612
  };
1613
1613
 
1614
- //# debugId=78924D4AB945D2A664756E2164756E21
1614
+ //# debugId=1CC16860F86733F564756E2164756E21
@@ -5,7 +5,7 @@
5
5
  "import {DisplayProfile} from \"./types\"\n\n/**\n * Complete G1 glyph widths from G1FontLoaderKt\n * These are GLYPH widths - multiply using renderFormula to get rendered pixels.\n * Rendered width = (glyphWidth + 1) * 2\n */\nconst G1_GLYPH_WIDTHS: Record<string, number> = {\n // Punctuation & Symbols\n \" \": 2,\n \"!\": 1,\n '\"': 2,\n \"#\": 6,\n \"$\": 5,\n \"%\": 6,\n \"&\": 7,\n \"'\": 1,\n \"(\": 2,\n \")\": 2,\n \"*\": 3,\n \"+\": 4,\n \",\": 1,\n \"-\": 4, // Hyphen: 4px glyph → 10px rendered (CRITICAL for breaking!)\n \".\": 1,\n \"/\": 3,\n\n // Numbers\n \"0\": 5,\n \"1\": 3,\n \"2\": 5,\n \"3\": 5,\n \"4\": 5,\n \"5\": 5,\n \"6\": 5,\n \"7\": 5,\n \"8\": 5,\n \"9\": 5,\n\n // More punctuation\n \":\": 1,\n \";\": 1,\n \"<\": 4,\n \"=\": 4,\n \">\": 4,\n \"?\": 5,\n \"@\": 7,\n\n // Uppercase\n \"A\": 6,\n \"B\": 5,\n \"C\": 5,\n \"D\": 5,\n \"E\": 4,\n \"F\": 4,\n \"G\": 5,\n \"H\": 5,\n \"I\": 2,\n \"J\": 3,\n \"K\": 5,\n \"L\": 4,\n \"M\": 7,\n \"N\": 5,\n \"O\": 5,\n \"P\": 5,\n \"Q\": 5,\n \"R\": 5,\n \"S\": 5,\n \"T\": 5,\n \"U\": 5,\n \"V\": 6,\n \"W\": 7,\n \"X\": 6,\n \"Y\": 6,\n \"Z\": 5,\n\n // Brackets & special\n \"[\": 2,\n \"\\\\\": 3,\n \"]\": 2,\n \"^\": 4,\n \"_\": 3,\n \"`\": 2,\n\n // Lowercase\n \"a\": 5,\n \"b\": 4,\n \"c\": 4,\n \"d\": 4,\n \"e\": 4,\n \"f\": 4,\n \"g\": 4,\n \"h\": 4,\n \"i\": 1,\n \"j\": 2,\n \"k\": 4,\n \"l\": 1,\n \"m\": 7,\n \"n\": 4,\n \"o\": 4,\n \"p\": 4,\n \"q\": 4,\n \"r\": 3,\n \"s\": 4,\n \"t\": 3,\n \"u\": 5,\n \"v\": 5,\n \"w\": 7,\n \"x\": 5,\n \"y\": 5,\n \"z\": 4,\n\n // More special\n \"{\": 3,\n \"|\": 1,\n \"}\": 3,\n \"~\": 7,\n}\n\n/**\n * Even Realities G1 Smart Glasses Display Profile\n *\n * Verified through empirical testing with actual hardware.\n * See: line-width-debug-tool/line-width-spec.md\n */\nexport const G1_PROFILE: DisplayProfile = {\n id: \"even-realities-g1\",\n name: \"Even Realities G1\",\n\n // Display dimensions\n displayWidthPx: 576,\n maxLines: 5,\n\n // BLE constraints\n maxPayloadBytes: 390,\n bleChunkSize: 176,\n\n // Font metrics\n fontMetrics: {\n // Glyph widths from G1FontLoaderKt\n glyphWidths: new Map(Object.entries(G1_GLYPH_WIDTHS)),\n\n // Default glyph width for unmapped Latin characters (use max to be safe)\n defaultGlyphWidth: 7,\n\n // Rendered width = (glyphWidth + 1) * 2\n renderFormula: (glyphWidth: number) => (glyphWidth + 1) * 2,\n\n // Uniform-width scripts - ALL characters in these scripts render at this exact width\n // These are verified values in RENDERED pixels, NOT averages\n uniformScripts: {\n cjk: 18, // ALL Chinese/Japanese Kanji chars = 18px (verified)\n hiragana: 18, // ALL Hiragana chars = 18px (verified)\n katakana: 18, // ALL Katakana chars = 18px (verified)\n korean: 24, // ALL Korean Hangul chars = 24px (verified)\n cyrillic: 18, // ALL Cyrillic chars = 18px (verified)\n },\n\n // Fallback for unmapped Latin characters\n // Uses MAX width to guarantee no overflow (safe under-utilization)\n fallback: {\n latinMaxWidth: 16, // Max Latin = 'm', 'w' at (7+1)*2 = 16px\n unknownBehavior: \"useLatinMax\",\n },\n },\n\n constraints: {\n minCharsBeforeHyphen: 3,\n // Kinsoku: Characters that should not appear at start of line\n noStartChars: [\".\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"]\", \"}\", \"。\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"】\", \"」\"],\n // Kinsoku: Characters that should not appear at end of line\n noEndChars: [\"(\", \"[\", \"{\", \"(\", \"【\", \"「\"],\n },\n}\n\n/**\n * G1 Profile for LEGACY mobile clients that have their own wrapping logic.\n *\n * Old mobile clients re-wrap text received from the cloud, causing double-wrapping.\n * This profile uses a reduced display width (~522px instead of 576px) so that\n * when the mobile client re-wraps, the result still fits within 5 lines.\n *\n * Use this profile when:\n * - Mobile client version < X.X.X (has old wrapping logic)\n * - You see text getting cut off or exceeding 5 lines\n *\n * Once all clients are updated, this can be deprecated.\n */\nexport const G1_PROFILE_LEGACY: DisplayProfile = {\n id: \"even-realities-g1-legacy\",\n name: \"Even Realities G1 (Legacy Client Compatibility)\",\n\n // Reduced display width to prevent double-wrapping overflow\n // Old mobile client wraps at ~90% of true width\n displayWidthPx: 420,\n maxLines: 5,\n\n // BLE constraints (same as standard)\n maxPayloadBytes: 390,\n bleChunkSize: 176,\n\n // Font metrics (same as standard)\n fontMetrics: {\n glyphWidths: new Map(Object.entries(G1_GLYPH_WIDTHS)),\n defaultGlyphWidth: 7,\n renderFormula: (glyphWidth: number) => (glyphWidth + 1) * 2,\n uniformScripts: {\n cjk: 18,\n hiragana: 18,\n katakana: 18,\n korean: 24,\n cyrillic: 18,\n },\n fallback: {\n latinMaxWidth: 16,\n unknownBehavior: \"useLatinMax\",\n },\n },\n\n constraints: {\n minCharsBeforeHyphen: 3,\n noStartChars: [\".\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"]\", \"}\", \"。\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"】\", \"」\"],\n noEndChars: [\"(\", \"[\", \"{\", \"(\", \"【\", \"「\"],\n },\n}\n\n/**\n * Get the hyphen width for G1 in rendered pixels.\n * Hyphen glyph = 4px → rendered = (4+1)*2 = 10px\n */\nexport const G1_HYPHEN_WIDTH_PX = 10\n\n/**\n * Get the space width for G1 in rendered pixels.\n * Space glyph = 2px → rendered = (2+1)*2 = 6px\n */\nexport const G1_SPACE_WIDTH_PX = 6\n",
6
6
  "import { DisplayProfile } from \"./types\";\n\n/**\n * Vuzix Z100 glyph widths - extracted from NotoSans-Regular.ttf at 21px\n *\n * These are pixel widths at the default font size used by the Z100 display.\n * The Z100 uses Noto Sans as its system font.\n *\n * Extracted using: node scripts/extract-font-metrics.js NotoSans-Regular.ttf 21\n */\nconst Z100_GLYPH_WIDTHS: Record<string, number> = {\n // Space and punctuation\n \" \": 5,\n \"!\": 6,\n '\"': 9,\n \"#\": 14,\n \"$\": 12,\n \"%\": 17,\n \"&\": 15,\n \"'\": 5,\n \"(\": 6,\n \")\": 6,\n \"*\": 12,\n \"+\": 12,\n \",\": 6,\n \"-\": 7, // Hyphen width - important for line breaking\n \".\": 6,\n \"/\": 8,\n\n // Numbers\n \"0\": 12,\n \"1\": 12,\n \"2\": 12,\n \"3\": 12,\n \"4\": 12,\n \"5\": 12,\n \"6\": 12,\n \"7\": 12,\n \"8\": 12,\n \"9\": 12,\n\n // More punctuation\n \":\": 6,\n \";\": 6,\n \"<\": 12,\n \"=\": 12,\n \">\": 12,\n \"?\": 9,\n \"@\": 19,\n\n // Uppercase\n \"A\": 13,\n \"B\": 14,\n \"C\": 13,\n \"D\": 15,\n \"E\": 12,\n \"F\": 11,\n \"G\": 15,\n \"H\": 16,\n \"I\": 7,\n \"J\": 6,\n \"K\": 13,\n \"L\": 11,\n \"M\": 19,\n \"N\": 16,\n \"O\": 16,\n \"P\": 13,\n \"Q\": 16,\n \"R\": 13,\n \"S\": 12,\n \"T\": 12,\n \"U\": 15,\n \"V\": 13,\n \"W\": 20,\n \"X\": 12,\n \"Y\": 12,\n \"Z\": 12,\n\n // Brackets & special\n \"[\": 7,\n \"\\\\\": 8,\n \"]\": 7,\n \"^\": 12,\n \"_\": 9,\n \"`\": 6,\n\n // Lowercase\n \"a\": 12,\n \"b\": 13,\n \"c\": 10,\n \"d\": 13,\n \"e\": 12,\n \"f\": 7,\n \"g\": 13,\n \"h\": 13,\n \"i\": 5,\n \"j\": 5,\n \"k\": 11,\n \"l\": 5,\n \"m\": 20,\n \"n\": 13,\n \"o\": 13,\n \"p\": 13,\n \"q\": 13,\n \"r\": 9,\n \"s\": 10,\n \"t\": 8,\n \"u\": 13,\n \"v\": 11,\n \"w\": 17,\n \"x\": 11,\n \"y\": 11,\n \"z\": 10,\n\n // More special\n \"{\": 8,\n \"|\": 12,\n \"}\": 8,\n \"~\": 12,\n};\n\n/**\n * Vuzix Z100 Smart Glasses Display Profile\n *\n * The Z100 has a green monochrome display with 640x480 resolution.\n * It uses the Vuzix Ultralite SDK and Noto Sans font family.\n *\n * Display specs:\n * - Resolution: 640x480\n * - Usable text width: ~390px (empirically tested - SDK applies margins)\n * - Color: Green monochrome\n * - Max text lines: 7\n * - Font: Noto Sans Regular at 21px\n * - No bitmap support via text commands\n * - Adjustable brightness\n *\n * NOTE: The Vuzix Ultralite SDK handles text rendering internally and applies\n * its own margins/padding. The usable text width is significantly less than\n * the physical 640px resolution. Empirical testing shows ~42 characters of\n * mixed text (387px measured) fits on one line before the SDK wraps.\n */\nexport const Z100_PROFILE: DisplayProfile = {\n id: \"vuzix-z100\",\n name: \"Vuzix Z100\",\n\n // Display dimensions\n // Empirically tested: ~42 chars of mixed text (387px) fits before SDK wraps\n // Using 390px to account for measurement variance\n displayWidthPx: 390,\n maxLines: 7,\n\n // BLE constraints\n // Z100 uses Vuzix Ultralite SDK which handles chunking internally\n // These are conservative values for direct BLE if needed\n maxPayloadBytes: 512,\n bleChunkSize: 180,\n\n // Font metrics - Noto Sans Regular at 21px\n fontMetrics: {\n glyphWidths: new Map(Object.entries(Z100_GLYPH_WIDTHS)),\n defaultGlyphWidth: 12, // Average width from extracted metrics\n // Z100 uses direct pixel widths, no render formula needed\n renderFormula: (glyphWidth: number) => glyphWidth,\n\n // Uniform-width scripts for CJK and other non-Latin\n // Noto Sans CJK characters are typically wider\n uniformScripts: {\n cjk: 21, // Full-width CJK characters\n hiragana: 21,\n katakana: 21,\n korean: 21,\n cyrillic: 14, // Cyrillic is similar to Latin in Noto Sans\n },\n\n fallback: {\n latinMaxWidth: 20, // 'W' and 'm' are the widest at 20px\n unknownBehavior: \"useLatinMax\",\n },\n },\n\n constraints: {\n minCharsBeforeHyphen: 3,\n noStartChars: [\".\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"]\", \"}\", \"。\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"】\", \"」\"],\n noEndChars: [\"(\", \"[\", \"{\", \"(\", \"【\", \"「\"],\n },\n};\n\n/**\n * Get the hyphen width for Z100 in pixels.\n * Used for line breaking calculations.\n */\nexport const Z100_HYPHEN_WIDTH_PX = 7;\n\n/**\n * Get the space width for Z100 in pixels.\n * Used for column alignment calculations.\n */\nexport const Z100_SPACE_WIDTH_PX = 5;\n",
7
7
  "import {DisplayProfile} from \"./types\"\n\n/**\n * Even Realities G2 Smart Glasses Display Profile\n *\n * G2 uses the same display hardware as G1 (green monochrome, ~640x200).\n * Glyph widths and rendering formula are identical to G1.\n * The protocol differs (EvenHub protobuf vs G1 binary) but display\n * characteristics are the same.\n */\n\n// G2 uses the same glyph widths as G1 (same display hardware/font)\nimport {G1_PROFILE} from \"./g1\"\n\nexport const G2_PROFILE: DisplayProfile = {\n ...G1_PROFILE,\n id: \"even-realities-g2\",\n name: \"Even Realities G2\",\n}\n\n/**\n * Get the hyphen width for G2 in rendered pixels.\n * Same as G1: Hyphen glyph = 4px → rendered = (4+1)*2 = 10px\n */\nexport const G2_HYPHEN_WIDTH_PX = 10\n\n/**\n * Get the space width for G2 in rendered pixels.\n * Same as G1: Space glyph = 2px → rendered = (2+1)*2 = 6px\n */\nexport const G2_SPACE_WIDTH_PX = 6\n",
8
- "import {DisplayProfile} from \"./types\"\n\n/**\n * Mentra Nex glyph widths\n *\n * PLACEHOLDER: Currently using G1 glyph widths until actual Nex font metrics are available.\n * TODO: Replace with actual Mentra Nex font measurements when hardware specs are confirmed.\n */\nconst NEX_GLYPH_WIDTHS: Record<string, number> = {\n // Punctuation & Symbols\n \" \": 2,\n \"!\": 1,\n '\"': 2,\n \"#\": 6,\n \"$\": 5,\n \"%\": 6,\n \"&\": 7,\n \"'\": 1,\n \"(\": 2,\n \")\": 2,\n \"*\": 3,\n \"+\": 4,\n \",\": 1,\n \"-\": 4,\n \".\": 1,\n \"/\": 3,\n\n // Numbers\n \"0\": 5,\n \"1\": 3,\n \"2\": 5,\n \"3\": 5,\n \"4\": 5,\n \"5\": 5,\n \"6\": 5,\n \"7\": 5,\n \"8\": 5,\n \"9\": 5,\n\n // More punctuation\n \":\": 1,\n \";\": 1,\n \"<\": 4,\n \"=\": 4,\n \">\": 4,\n \"?\": 5,\n \"@\": 7,\n\n // Uppercase\n \"A\": 6,\n \"B\": 5,\n \"C\": 5,\n \"D\": 5,\n \"E\": 4,\n \"F\": 4,\n \"G\": 5,\n \"H\": 5,\n \"I\": 2,\n \"J\": 3,\n \"K\": 5,\n \"L\": 4,\n \"M\": 7,\n \"N\": 5,\n \"O\": 5,\n \"P\": 5,\n \"Q\": 5,\n \"R\": 5,\n \"S\": 5,\n \"T\": 5,\n \"U\": 5,\n \"V\": 6,\n \"W\": 7,\n \"X\": 6,\n \"Y\": 6,\n \"Z\": 5,\n\n // Brackets & special\n \"[\": 2,\n \"\\\\\": 3,\n \"]\": 2,\n \"^\": 4,\n \"_\": 3,\n \"`\": 2,\n\n // Lowercase\n \"a\": 5,\n \"b\": 4,\n \"c\": 4,\n \"d\": 4,\n \"e\": 4,\n \"f\": 4,\n \"g\": 4,\n \"h\": 4,\n \"i\": 1,\n \"j\": 2,\n \"k\": 4,\n \"l\": 1,\n \"m\": 7,\n \"n\": 4,\n \"o\": 4,\n \"p\": 4,\n \"q\": 4,\n \"r\": 3,\n \"s\": 4,\n \"t\": 3,\n \"u\": 5,\n \"v\": 5,\n \"w\": 7,\n \"x\": 5,\n \"y\": 5,\n \"z\": 4,\n\n // More special\n \"{\": 3,\n \"|\": 1,\n \"}\": 3,\n \"~\": 7,\n}\n\n/**\n * Mentra Nex Smart Glasses Display Profile\n *\n * Also known as \"Mentra Display\" - a new Mentra glasses model with display capabilities.\n *\n * PLACEHOLDER VALUES: All values are currently based on G1 profile.\n * TODO: Update with actual Mentra Nex specifications when available.\n */\nexport const NEX_PROFILE: DisplayProfile = {\n id: \"mentra-nex\",\n name: \"Mentra Nex\",\n\n // Display dimensions\n // PLACEHOLDER: Using G1 values until Nex specs confirmed\n displayWidthPx: 576,\n maxLines: 5,\n\n // BLE constraints\n // PLACEHOLDER: Using G1 values until Nex specs confirmed\n maxPayloadBytes: 390,\n bleChunkSize: 176,\n\n // Font metrics\n // PLACEHOLDER: Using G1 font metrics until Nex font is measured\n fontMetrics: {\n glyphWidths: new Map(Object.entries(NEX_GLYPH_WIDTHS)),\n defaultGlyphWidth: 7,\n renderFormula: (glyphWidth: number) => (glyphWidth + 1) * 2,\n\n // Uniform-width scripts\n // PLACEHOLDER: Using G1 values\n uniformScripts: {\n cjk: 18,\n hiragana: 18,\n katakana: 18,\n korean: 24,\n cyrillic: 18,\n },\n\n fallback: {\n latinMaxWidth: 16,\n unknownBehavior: \"useLatinMax\",\n },\n },\n\n constraints: {\n minCharsBeforeHyphen: 3,\n noStartChars: [\".\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"]\", \"}\", \"。\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"】\", \"」\"],\n noEndChars: [\"(\", \"[\", \"{\", \"(\", \"【\", \"「\"],\n },\n}\n\n/**\n * Get the hyphen width for Mentra Nex in rendered pixels.\n * PLACEHOLDER: Using G1 value\n */\nexport const NEX_HYPHEN_WIDTH_PX = 10\n\n/**\n * Get the space width for Mentra Nex in rendered pixels.\n * PLACEHOLDER: Using G1 value\n */\nexport const NEX_SPACE_WIDTH_PX = 6\n",
8
+ "import { DisplayProfile } from \"./types\";\n\n/**\n * Mentra Nex glyph widths\n */\nconst NEX_GLYPH_WIDTHS: Record<string, number> = {\n // Punctuation & Symbols\n \" \": 4,\n \"!\": 3,\n '\"': 5,\n \"#\": 12,\n \"$\": 10,\n \"%\": 13,\n \"&\": 12,\n \"'\": 3,\n \"(\": 7,\n \")\": 7,\n \"*\": 8,\n \"+\": 11,\n \",\": 5,\n \"-\": 8,\n \".\": 5,\n \"/\": 8,\n\n // Numbers\n \"0\": 12,\n \"1\": 5,\n \"2\": 11,\n \"3\": 11,\n \"4\": 11,\n \"5\": 11,\n \"6\": 11,\n \"7\": 11,\n \"8\": 11,\n \"9\": 11,\n\n // More punctuation\n \":\": 5,\n \";\": 5,\n \"<\": 11,\n \"=\": 11,\n \">\": 11,\n \"?\": 9,\n \"@\": 14,\n\n // Uppercase\n \"A\": 12,\n \"B\": 12,\n \"C\": 13,\n \"D\": 13,\n \"E\": 11,\n \"F\": 11,\n \"G\": 14,\n \"H\": 13,\n \"I\": 4,\n \"J\": 10,\n \"K\": 10,\n \"L\": 11,\n \"M\": 15,\n \"N\": 13,\n \"O\": 15,\n \"P\": 11,\n \"Q\": 15,\n \"R\": 11,\n \"S\": 11,\n \"T\": 11,\n \"U\": 13,\n \"V\": 12,\n \"W\": 16,\n \"X\": 11,\n \"Y\": 11,\n \"Z\": 11,\n\n // Brackets & special\n \"[\": 6,\n \"\\\\\": 8,\n \"]\": 6,\n \"^\": 11,\n \"_\": 9,\n \"`\": 11,\n\n // Lowercase\n \"a\": 9,\n \"b\": 10,\n \"c\": 9,\n \"d\": 10,\n \"e\": 10,\n \"f\": 6,\n \"g\": 10,\n \"h\": 10,\n \"i\": 3,\n \"j\": 3,\n \"k\": 8,\n \"l\": 3,\n \"m\": 15,\n \"n\": 10,\n \"o\": 10,\n \"p\": 10,\n \"q\": 10,\n \"r\": 6,\n \"s\": 8,\n \"t\": 6,\n \"u\": 10,\n \"v\": 9,\n \"w\": 12,\n \"x\": 8,\n \"y\": 9,\n \"z\": 8,\n\n // More special\n \"{\": 7,\n \"|\": 5,\n \"}\": 7,\n \"~\": 11,\n};\n\n/**\n * Mentra Nex Smart Glasses Display Profile\n *\n * Also known as \"Mentra Display\" - a new Mentra glasses model with display capabilities.\n */\nexport const NEX_PROFILE: DisplayProfile = {\n id: \"mentra-nex\",\n name: \"Mentra Nex\",\n\n // Display dimensions\n displayWidthPx: 440,\n maxLines: 5,\n\n maxPayloadBytes: 226,\n bleChunkSize: 176,\n\n // Font metrics\n fontMetrics: {\n glyphWidths: new Map(Object.entries(NEX_GLYPH_WIDTHS)),\n defaultGlyphWidth: 16,\n renderFormula: (glyphWidth: number) => glyphWidth,\n\n uniformScripts: {\n cjk: 18,\n hiragana: 18,\n katakana: 18,\n korean: 24,\n cyrillic: 18,\n },\n\n fallback: {\n latinMaxWidth: 16,\n unknownBehavior: \"useLatinMax\",\n },\n },\n\n constraints: {\n minCharsBeforeHyphen: 3,\n noStartChars: [\".\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"]\", \"}\", \"。\", \",\", \"!\", \"?\", \":\", \";\", \")\", \"】\", \"」\"],\n noEndChars: [\"(\", \"[\", \"{\", \"(\", \"【\", \"「\"],\n },\n};\n\nexport const NEX_HYPHEN_WIDTH_PX = 8;\n\nexport const NEX_SPACE_WIDTH_PX = 4;\n",
9
9
  "import type {ScriptType} from \"../profiles/types\"\n\n/**\n * Unicode ranges for script detection.\n * Used to classify characters for proper width measurement.\n */\nexport const SCRIPT_RANGES = {\n // CJK Unified Ideographs\n cjk: [\n [0x4e00, 0x9fff], // Main block (common Chinese, Japanese Kanji)\n [0x3400, 0x4dbf], // Extension A\n [0x20000, 0x2a6df], // Extension B\n [0x2a700, 0x2b73f], // Extension C\n [0x2b740, 0x2b81f], // Extension D\n [0xf900, 0xfaff], // Compatibility Ideographs\n ] as const,\n\n // Japanese Hiragana\n hiragana: [[0x3040, 0x309f]] as const,\n\n // Japanese Katakana\n katakana: [\n [0x30a0, 0x30ff], // Main block\n [0x31f0, 0x31ff], // Phonetic Extensions\n ] as const,\n\n // Korean\n korean: [\n [0xac00, 0xd7af], // Hangul Syllables\n [0x1100, 0x11ff], // Hangul Jamo\n [0x3130, 0x318f], // Compatibility Jamo\n [0xa960, 0xa97f], // Jamo Extended-A\n [0xd7b0, 0xd7ff], // Jamo Extended-B\n ] as const,\n\n // Cyrillic\n cyrillic: [\n [0x0400, 0x04ff], // Main block\n [0x0500, 0x052f], // Supplement\n ] as const,\n\n // Numbers (ASCII)\n numbers: [[0x30, 0x39]] as const,\n\n // Basic punctuation (ASCII)\n punctuation: [\n [0x20, 0x2f], // Space and basic punctuation\n [0x3a, 0x40], // More punctuation\n [0x5b, 0x60], // Brackets etc.\n [0x7b, 0x7e], // Braces etc.\n ] as const,\n\n // Unsupported scripts (for filtering)\n arabic: [[0x0600, 0x06ff]] as const,\n hebrew: [[0x0590, 0x05ff]] as const,\n thai: [[0x0e00, 0x0e7f]] as const,\n emoji: [\n [0x1f600, 0x1f64f], // Emoticons\n [0x1f300, 0x1f5ff], // Misc Symbols and Pictographs\n [0x1f680, 0x1f6ff], // Transport and Map\n [0x1f1e0, 0x1f1ff], // Flags\n [0x2600, 0x26ff], // Misc Symbols\n [0x2700, 0x27bf], // Dingbats\n [0xfe00, 0xfe0f], // Variation Selectors\n [0x1f900, 0x1f9ff], // Supplemental Symbols\n ] as const,\n} as const\n\n/**\n * Check if a code point is within any of the given ranges.\n */\nfunction inRanges(codePoint: number, ranges: readonly (readonly [number, number])[]): boolean {\n for (const [start, end] of ranges) {\n if (codePoint >= start && codePoint <= end) {\n return true\n }\n }\n return false\n}\n\n/**\n * Detect the script type of a single character.\n *\n * @param char - Single character to classify\n * @returns The script type of the character\n */\nexport function detectScript(char: string): ScriptType {\n if (!char || char.length === 0) {\n return \"latin\"\n }\n\n // Get the code point (handles surrogate pairs for characters outside BMP)\n const codePoint = char.codePointAt(0)\n if (codePoint === undefined) {\n return \"latin\"\n }\n\n // Check each script in order of likelihood/importance\n\n // CJK (most common for multi-byte)\n if (inRanges(codePoint, SCRIPT_RANGES.cjk)) {\n return \"cjk\"\n }\n\n // Japanese kana\n if (inRanges(codePoint, SCRIPT_RANGES.hiragana)) {\n return \"hiragana\"\n }\n if (inRanges(codePoint, SCRIPT_RANGES.katakana)) {\n return \"katakana\"\n }\n\n // Korean\n if (inRanges(codePoint, SCRIPT_RANGES.korean)) {\n return \"korean\"\n }\n\n // Cyrillic\n if (inRanges(codePoint, SCRIPT_RANGES.cyrillic)) {\n return \"cyrillic\"\n }\n\n // Numbers\n if (inRanges(codePoint, SCRIPT_RANGES.numbers)) {\n return \"numbers\"\n }\n\n // Punctuation\n if (inRanges(codePoint, SCRIPT_RANGES.punctuation)) {\n return \"punctuation\"\n }\n\n // Unsupported scripts\n if (\n inRanges(codePoint, SCRIPT_RANGES.arabic) ||\n inRanges(codePoint, SCRIPT_RANGES.hebrew) ||\n inRanges(codePoint, SCRIPT_RANGES.thai) ||\n inRanges(codePoint, SCRIPT_RANGES.emoji)\n ) {\n return \"unsupported\"\n }\n\n // Default to Latin for ASCII letters and anything else\n return \"latin\"\n}\n\n/**\n * Check if a character is a CJK character (Chinese, Japanese Kanji).\n * CJK characters can break anywhere without needing a hyphen.\n */\nexport function isCJKCharacter(char: string): boolean {\n const script = detectScript(char)\n return script === \"cjk\" || script === \"hiragana\" || script === \"katakana\"\n}\n\n/**\n * Check if a character is Korean Hangul.\n */\nexport function isKoreanCharacter(char: string): boolean {\n return detectScript(char) === \"korean\"\n}\n\n/**\n * Check if a character is from a uniform-width script.\n * These scripts render all characters at the same width.\n */\nexport function isUniformWidthScript(char: string): boolean {\n const script = detectScript(char)\n return (\n script === \"cjk\" || script === \"hiragana\" || script === \"katakana\" || script === \"korean\" || script === \"cyrillic\"\n )\n}\n\n/**\n * Check if a character is from an unsupported script.\n * These characters may not render correctly on the glasses.\n */\nexport function isUnsupportedScript(char: string): boolean {\n return detectScript(char) === \"unsupported\"\n}\n\n/**\n * Check if breaking between two characters requires a hyphen.\n * Returns false for:\n * - Breaking after CJK characters (can break anywhere)\n * - Breaking before or after spaces\n * - Breaking after punctuation\n */\nexport function needsHyphenForBreak(charBefore: string, charAfter: string): boolean {\n // No hyphen needed after CJK (can break anywhere)\n if (isCJKCharacter(charBefore)) {\n return false\n }\n\n // No hyphen needed before CJK\n if (isCJKCharacter(charAfter)) {\n return false\n }\n\n // No hyphen needed after space\n if (charBefore === \" \" || charBefore === \"\\t\") {\n return false\n }\n\n // No hyphen needed before space (the space is a natural break point)\n if (charAfter === \" \" || charAfter === \"\\t\") {\n return false\n }\n\n // No hyphen needed after existing punctuation that serves as break\n const breakPunctuation = [\"-\", \"–\", \"—\", \"/\", \"\\\\\", \"|\"]\n if (breakPunctuation.includes(charBefore)) {\n return false\n }\n\n // Default: hyphen is needed for mid-word Latin breaks\n return true\n}\n",
10
10
  "import type { DisplayProfile, ScriptType } from \"../profiles/types\"\nimport { detectScript, isUniformWidthScript } from \"./script-detection\"\n\n/**\n * Character measurement result with detailed breakdown.\n */\nexport interface CharMeasurement {\n /** The character measured */\n char: string\n /** Width in rendered pixels */\n widthPx: number\n /** The script type of the character */\n script: ScriptType\n /** Whether width came from glyph map (true) or fallback (false) */\n fromGlyphMap: boolean\n}\n\n/**\n * Text measurement result with detailed breakdown.\n */\nexport interface TextMeasurement {\n /** The text measured */\n text: string\n /** Total width in rendered pixels */\n totalWidthPx: number\n /** Number of characters */\n charCount: number\n /** Per-character measurements (optional, for debugging) */\n chars?: CharMeasurement[]\n}\n\n/**\n * Measures text width in pixels based on a DisplayProfile.\n * All measurements are in actual rendered pixels, not abstract units.\n *\n * Key features:\n * - Pixel-perfect measurement for mapped characters\n * - Uniform-width handling for CJK, Korean, Cyrillic\n * - Safe fallback for unmapped Latin characters\n * - Caching for performance\n */\nexport class TextMeasurer {\n private readonly profile: DisplayProfile\n private readonly charCache: Map<string, number> = new Map()\n\n constructor(profile: DisplayProfile) {\n this.profile = profile\n // Pre-populate cache with known glyphs\n this.buildCharCache()\n }\n\n /**\n * Pre-compute rendered widths for all known glyphs.\n */\n private buildCharCache(): void {\n const { glyphWidths, renderFormula } = this.profile.fontMetrics\n\n for (const [char, glyphWidth] of glyphWidths.entries()) {\n const renderedWidth = renderFormula(glyphWidth)\n this.charCache.set(char, renderedWidth)\n }\n }\n\n /**\n * Measure the total pixel width of a text string.\n *\n * @param text - The text to measure\n * @returns Width in rendered pixels\n */\n measureText(text: string): number {\n if (!text || text.length === 0) {\n return 0\n }\n\n let totalWidth = 0\n for (const char of text) {\n totalWidth += this.measureChar(char)\n }\n return totalWidth\n }\n\n /**\n * Measure text with detailed breakdown of each character.\n *\n * @param text - The text to measure\n * @returns Detailed measurement result\n */\n measureTextDetailed(text: string): TextMeasurement {\n if (!text || text.length === 0) {\n return {\n text: \"\",\n totalWidthPx: 0,\n charCount: 0,\n chars: [],\n }\n }\n\n const chars: CharMeasurement[] = []\n let totalWidth = 0\n\n for (const char of text) {\n const script = detectScript(char)\n const widthPx = this.measureChar(char)\n const fromGlyphMap = this.profile.fontMetrics.glyphWidths.has(char)\n\n chars.push({\n char,\n widthPx,\n script,\n fromGlyphMap,\n })\n\n totalWidth += widthPx\n }\n\n return {\n text,\n totalWidthPx: totalWidth,\n charCount: chars.length,\n chars,\n }\n }\n\n /**\n * Measure a single character's pixel width.\n *\n * IMPORTANT: This is PIXEL-PERFECT measurement, not averaging!\n * - Mapped characters: exact width from glyph map\n * - Uniform scripts (CJK, Korean, Cyrillic): verified uniform width\n * - Unmapped Latin: MAX width fallback (safe, never overflow)\n *\n * @param char - Single character to measure\n * @returns Width in rendered pixels\n */\n measureChar(char: string): number {\n if (!char || char.length === 0) {\n return 0\n }\n\n // Check cache first (includes pre-computed glyph map entries)\n const cached = this.charCache.get(char)\n if (cached !== undefined) {\n return cached\n }\n\n // Calculate width based on script type\n const width = this.calculateCharWidth(char)\n\n // Cache for future lookups\n this.charCache.set(char, width)\n\n return width\n }\n\n /**\n * Calculate character width (called when not in cache).\n */\n private calculateCharWidth(char: string): number {\n const { fontMetrics } = this.profile\n const { uniformScripts, fallback, renderFormula, glyphWidths } = fontMetrics\n\n // 1. Check explicit glyph map (pixel-perfect for Latin)\n const glyphWidth = glyphWidths.get(char)\n if (glyphWidth !== undefined) {\n return renderFormula(glyphWidth)\n }\n\n // 2. Uniform-width scripts (verified monospace - NOT averages!)\n const script = detectScript(char)\n\n switch (script) {\n case \"cjk\":\n return uniformScripts.cjk // ALL CJK chars are exactly this width\n case \"hiragana\":\n return uniformScripts.hiragana // ALL Hiragana chars are exactly this width\n case \"katakana\":\n return uniformScripts.katakana // ALL Katakana chars are exactly this width\n case \"korean\":\n return uniformScripts.korean // ALL Korean chars are exactly this width\n case \"cyrillic\":\n return uniformScripts.cyrillic // ALL Cyrillic chars are exactly this width\n }\n\n // 3. Unmapped Latin or unknown: use MAX width (safe fallback)\n // This guarantees we NEVER overflow - worst case is slight under-utilization\n return fallback.latinMaxWidth\n }\n\n /**\n * Get the raw glyph width (before render formula).\n * Returns undefined for unmapped characters.\n *\n * @param char - Single character\n * @returns Glyph width in pixels, or undefined if not in glyph map\n */\n getGlyphWidth(char: string): number | undefined {\n return this.profile.fontMetrics.glyphWidths.get(char)\n }\n\n /**\n * Check if text fits within a pixel width.\n *\n * @param text - Text to check\n * @param maxWidthPx - Maximum width in pixels\n * @returns true if text fits\n */\n fitsInWidth(text: string, maxWidthPx: number): boolean {\n return this.measureText(text) <= maxWidthPx\n }\n\n /**\n * Find how many characters fit within a pixel width.\n *\n * @param text - Text to measure\n * @param maxWidthPx - Maximum width in pixels\n * @param startIndex - Starting index (default: 0)\n * @returns Number of characters that fit\n */\n charsThatFit(text: string, maxWidthPx: number, startIndex: number = 0): number {\n if (!text || startIndex >= text.length) {\n return 0\n }\n\n let currentWidth = 0\n let count = 0\n\n // Use Array.from to handle surrogate pairs correctly\n const chars = Array.from(text).slice(startIndex)\n\n for (const char of chars) {\n const charWidth = this.measureChar(char)\n\n if (currentWidth + charWidth > maxWidthPx) {\n break\n }\n\n currentWidth += charWidth\n count++\n }\n\n return count\n }\n\n /**\n * Find the pixel position of a character index in text.\n *\n * @param text - Text to measure\n * @param index - Character index\n * @returns Pixel offset from start of text\n */\n getPixelOffset(text: string, index: number): number {\n if (!text || index <= 0) {\n return 0\n }\n\n const chars = Array.from(text).slice(0, index)\n let offset = 0\n\n for (const char of chars) {\n offset += this.measureChar(char)\n }\n\n return offset\n }\n\n /**\n * Detect the script type of a character.\n *\n * @param char - Single character\n * @returns Script type\n */\n detectScript(char: string): ScriptType {\n return detectScript(char)\n }\n\n /**\n * Check if a character is from a uniform-width script.\n *\n * @param char - Single character\n * @returns true if character is from CJK, Korean, or Cyrillic\n */\n isUniformWidth(char: string): boolean {\n return isUniformWidthScript(char)\n }\n\n /**\n * Get the display profile.\n */\n getProfile(): DisplayProfile {\n return this.profile\n }\n\n /**\n * Get the display width in pixels.\n */\n getDisplayWidthPx(): number {\n return this.profile.displayWidthPx\n }\n\n /**\n * Get the maximum number of lines.\n */\n getMaxLines(): number {\n return this.profile.maxLines\n }\n\n /**\n * Get the maximum payload size in bytes.\n */\n getMaxPayloadBytes(): number {\n return this.profile.maxPayloadBytes\n }\n\n /**\n * Calculate the UTF-8 byte size of text.\n *\n * @param text - Text to measure\n * @returns Byte size\n */\n getByteSize(text: string): number {\n return new TextEncoder().encode(text).length\n }\n\n /**\n * Get the width of a hyphen character in rendered pixels.\n */\n getHyphenWidth(): number {\n return this.measureChar(\"-\")\n }\n\n /**\n * Get the width of a space character in rendered pixels.\n */\n getSpaceWidth(): number {\n return this.measureChar(\" \")\n }\n\n /**\n * Clear the character cache.\n * Useful if profile metrics change at runtime.\n */\n clearCache(): void {\n this.charCache.clear()\n this.buildCharCache()\n }\n}\n",
11
11
  "/**\n * Options for text wrapping.\n */\nexport interface WrapOptions {\n /** Maximum width in pixels (defaults to profile's displayWidthPx) */\n maxWidthPx?: number;\n\n /** Maximum number of lines (defaults to profile's maxLines) */\n maxLines?: number;\n\n /** Maximum total bytes (defaults to profile's maxPayloadBytes) */\n maxBytes?: number;\n\n /**\n * Break mode:\n * - 'character': Break mid-word with hyphen for 100% utilization\n * - 'word': Break at word boundaries, hyphenate only if word > line\n * - 'strict-word': Break at word boundaries only, truncate long words\n */\n breakMode?: BreakMode;\n\n /** Character to use for hyphenation (default: '-') */\n hyphenChar?: string;\n\n /** Minimum characters before allowing hyphen break (default: 3) */\n minCharsBeforeHyphen?: number;\n\n /** Whether to trim whitespace from line ends (default: true) */\n trimLines?: boolean;\n\n /** Whether to preserve explicit newlines in input (default: true) */\n preserveNewlines?: boolean;\n}\n\n/**\n * Break mode for text wrapping.\n * - 'character': Break mid-word with hyphen for 100% utilization\n * - 'character-no-hyphen': Break mid-word without hyphen (clean break)\n * - 'word': Break at word boundaries, hyphenate only if word > line\n * - 'strict-word': Break at word boundaries only, truncate long words\n */\nexport type BreakMode = \"character\" | \"character-no-hyphen\" | \"word\" | \"strict-word\";\n\n/**\n * Result of wrapping operation.\n */\nexport interface WrapResult {\n /** Wrapped lines */\n lines: string[];\n\n /** Whether content was truncated to fit constraints */\n truncated: boolean;\n\n /** Total pixel width of widest line */\n maxLineWidthPx: number;\n\n /** Total byte size of all lines */\n totalBytes: number;\n\n /** Per-line metadata */\n lineMetrics: LineMetrics[];\n\n /** Original input text */\n originalText: string;\n\n /** Break mode used */\n breakMode: BreakMode;\n}\n\n/**\n * Per-line metrics from wrapping.\n */\nexport interface LineMetrics {\n /** The line text */\n text: string;\n\n /** Width in pixels */\n widthPx: number;\n\n /** Byte size of this line */\n bytes: number;\n\n /** Utilization percentage (widthPx / maxWidthPx * 100) */\n utilizationPercent: number;\n\n /** Whether this line ends with a hyphen from breaking */\n endsWithHyphen: boolean;\n\n /** Whether this line was created from an explicit newline */\n fromExplicitNewline: boolean;\n}\n\n/**\n * Default wrap options.\n */\nexport const DEFAULT_WRAP_OPTIONS: Required<Omit<WrapOptions, \"maxWidthPx\" | \"maxLines\" | \"maxBytes\">> = {\n breakMode: \"character-no-hyphen\",\n hyphenChar: \"-\",\n minCharsBeforeHyphen: 3,\n trimLines: true,\n preserveNewlines: true,\n};\n",
@@ -15,7 +15,7 @@
15
15
  "/**\n * ColumnComposer\n *\n * Handles composition of multi-column layouts like double_text_wall.\n * This is the single source of truth for column layout logic, replacing\n * the duplicate implementations in native iOS (G1Text.swift) and\n * Android (G1Text.kt, G1.java).\n *\n * The composer:\n * 1. Wraps each column's text to its allocated width\n * 2. Merges columns line-by-line with pixel-precise space padding\n * 3. Returns a single pre-composed string ready for native to chunk & send\n *\n * @see cloud/issues/026-mobile-display-processor for design docs\n */\n\nimport type { DisplayProfile } from \"../profiles/types\";\nimport { TextMeasurer } from \"../measurer/TextMeasurer\";\nimport { TextWrapper } from \"../wrapper/TextWrapper\";\nimport type { WrapOptions, BreakMode } from \"../wrapper/types\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Configuration for column layout\n */\nexport interface ColumnConfig {\n /** Width of the left column in pixels */\n leftColumnWidthPx: number;\n /** X position where the right column starts in pixels */\n rightColumnStartPx: number;\n /** Width of the right column in pixels (calculated from start position) */\n rightColumnWidthPx: number;\n /** Maximum number of lines to display */\n maxLines: number;\n /** Left margin in spaces (for indentation) */\n leftMarginSpaces?: number;\n}\n\n/**\n * Options for composing double text wall\n */\nexport interface ComposeOptions {\n /** Break mode for text wrapping */\n breakMode?: BreakMode;\n /** Custom column configuration (overrides profile defaults) */\n columnConfig?: Partial<ColumnConfig>;\n}\n\n/**\n * Result of column composition\n */\nexport interface ComposeResult {\n /** The fully composed text with both columns merged */\n composedText: string;\n /** Lines from the left column (for debugging/preview) */\n leftLines: string[];\n /** Lines from the right column (for debugging/preview) */\n rightLines: string[];\n /** The column configuration that was used */\n config: ColumnConfig;\n}\n\n// =============================================================================\n// ColumnComposer Class\n// =============================================================================\n\n/**\n * Composes multi-column layouts for smart glasses displays.\n *\n * Usage:\n * ```typescript\n * const composer = new ColumnComposer(G1_PROFILE)\n * const result = composer.composeDoubleTextWall(\"Left content\", \"Right content\")\n * // result.composedText is ready to send to native SGC\n * ```\n */\nexport class ColumnComposer {\n private profile: DisplayProfile;\n private measurer: TextMeasurer;\n private wrapper: TextWrapper;\n private spaceWidthPx: number;\n\n constructor(profile: DisplayProfile, breakMode: BreakMode = \"character-no-hyphen\") {\n this.profile = profile;\n this.measurer = new TextMeasurer(profile);\n this.wrapper = new TextWrapper(this.measurer, {\n breakMode,\n });\n\n // Cache space width for alignment calculations\n this.spaceWidthPx = this.measurer.measureText(\" \");\n }\n\n // ===========================================================================\n // Public API\n // ===========================================================================\n\n /**\n * Compose a double text wall layout.\n *\n * Takes left and right text, wraps each to their column width,\n * and merges them with pixel-precise space alignment.\n *\n * @param leftText - Text for the left column\n * @param rightText - Text for the right column\n * @param options - Optional composition settings\n * @returns Composed result with merged text and metadata\n */\n public composeDoubleTextWall(leftText: string, rightText: string, options: ComposeOptions = {}): ComposeResult {\n const config = this.getColumnConfig(options.columnConfig);\n\n // Wrap each column independently\n const leftWrapOptions: WrapOptions = {\n maxWidthPx: config.leftColumnWidthPx,\n maxLines: config.maxLines,\n };\n\n const rightWrapOptions: WrapOptions = {\n maxWidthPx: config.rightColumnWidthPx,\n maxLines: config.maxLines,\n };\n\n const leftResult = this.wrapper.wrap(leftText || \"\", leftWrapOptions);\n const rightResult = this.wrapper.wrap(rightText || \"\", rightWrapOptions);\n\n // Pad arrays to have exactly maxLines entries\n const leftLines = this.padLines(leftResult.lines, config.maxLines);\n const rightLines = this.padLines(rightResult.lines, config.maxLines);\n\n // Merge columns with space alignment\n const composedText = this.mergeColumns(leftLines, rightLines, config);\n\n return {\n composedText,\n leftLines,\n rightLines,\n config,\n };\n }\n\n /**\n * Get the default column configuration for the current profile.\n */\n public getDefaultColumnConfig(): ColumnConfig {\n return this.getColumnConfig();\n }\n\n /**\n * Update the break mode for text wrapping.\n */\n public setBreakMode(breakMode: BreakMode): void {\n this.wrapper = new TextWrapper(this.measurer, {\n breakMode,\n });\n }\n\n // ===========================================================================\n // Private Methods\n // ===========================================================================\n\n /**\n * Get column configuration, merging defaults with overrides.\n */\n private getColumnConfig(overrides?: Partial<ColumnConfig>): ColumnConfig {\n const displayWidth = this.profile.displayWidthPx;\n\n // Default layout: 50% for left column, right starts at 55%\n // This matches the native G1Text implementations\n const defaults: ColumnConfig = {\n leftColumnWidthPx: Math.floor(displayWidth * 0.5),\n rightColumnStartPx: Math.floor(displayWidth * 0.55),\n rightColumnWidthPx: displayWidth - Math.floor(displayWidth * 0.55),\n maxLines: this.profile.maxLines,\n leftMarginSpaces: 0,\n };\n\n return {\n ...defaults,\n ...overrides,\n };\n }\n\n /**\n * Pad lines array to exactly `count` entries.\n */\n private padLines(lines: string[], count: number): string[] {\n const result = [...lines];\n while (result.length < count) {\n result.push(\"\");\n }\n return result.slice(0, count);\n }\n\n /**\n * Merge left and right columns with pixel-precise space alignment.\n *\n * For each line:\n * 1. Take the left column text\n * 2. Calculate its pixel width\n * 3. Calculate how many spaces needed to reach rightColumnStartPx\n * 4. Append spaces and right column text\n */\n private mergeColumns(leftLines: string[], rightLines: string[], config: ColumnConfig): string {\n const lines: string[] = [];\n\n for (let i = 0; i < config.maxLines; i++) {\n const leftText = this.cleanEnspaces(leftLines[i] || \"\");\n const rightText = this.cleanEnspaces(rightLines[i] || \"\");\n\n // Calculate pixel width of left text\n const leftWidthPx = this.measurer.measureText(leftText);\n\n // Calculate spaces needed to reach the right column start\n const spacesNeeded = this.calculateSpacesForAlignment(leftWidthPx, config.rightColumnStartPx);\n\n // Build the merged line\n let line = \"\";\n\n // Add left margin if configured\n if (config.leftMarginSpaces && config.leftMarginSpaces > 0) {\n line += \" \".repeat(config.leftMarginSpaces);\n }\n\n line += leftText;\n line += \" \".repeat(spacesNeeded);\n line += rightText;\n\n lines.push(line);\n }\n\n return lines.join(\"\\n\");\n }\n\n /**\n * Calculate the number of spaces needed to align to a target position.\n *\n * @param currentWidthPx - Current position in pixels\n * @param targetPositionPx - Target position in pixels\n * @returns Number of space characters needed\n */\n private calculateSpacesForAlignment(currentWidthPx: number, targetPositionPx: number): number {\n const pixelsNeeded = targetPositionPx - currentWidthPx;\n\n // Ensure at least one space for separation\n if (pixelsNeeded <= 0) {\n return 1;\n }\n\n // Calculate spaces needed. Use Math.floor (not Math.ceil) to ensure the\n // right column never starts past rightColumnStartPx. Rounding up caused\n // the right column to start 1–5px further right than planned, shrinking\n // its usable width and causing the last character to wrap onto the next\n // line's left position.\n const spaces = Math.max(1, Math.floor(pixelsNeeded / this.spaceWidthPx));\n\n // Cap at a reasonable maximum to prevent runaway spacing\n return Math.min(spaces, 100);\n }\n\n /**\n * Remove en-space characters (U+2002) that may have been added during wrapping.\n * Native implementations do this cleanup before merging.\n */\n private cleanEnspaces(text: string): string {\n return text.replace(/\\u2002/g, \"\");\n }\n}\n\n// =============================================================================\n// Factory Function\n// =============================================================================\n\n/**\n * Create a ColumnComposer for a given profile.\n *\n * @param profile - Display profile to use\n * @param breakMode - Break mode for text wrapping (default: \"word\")\n * @returns Configured ColumnComposer instance\n */\nexport function createColumnComposer(profile: DisplayProfile, breakMode: BreakMode = \"word\"): ColumnComposer {\n return new ColumnComposer(profile, breakMode);\n}\n",
16
16
  "/**\n * @mentra/display-utils\n *\n * Glasses-agnostic, pixel-accurate text measurement and wrapping library\n * for smart glasses displays.\n *\n * Key features:\n * - Pixel-perfect measurement (no abstract units or averages)\n * - Multiple break modes (character, word, strict-word)\n * - Full script support (Latin, CJK, Korean, Cyrillic)\n * - Configurable display profiles for different glasses hardware\n *\n * @example\n * ```typescript\n * import {\n * TextMeasurer,\n * TextWrapper,\n * DisplayHelpers,\n * G1_PROFILE\n * } from '@mentra/display-utils'\n *\n * // Create measurer and wrapper for G1 glasses\n * const measurer = new TextMeasurer(G1_PROFILE)\n * const wrapper = new TextWrapper(measurer, { breakMode: 'character' })\n * const helpers = new DisplayHelpers(measurer, wrapper)\n *\n * // Wrap text for display\n * const result = wrapper.wrap(\"Hello, world! This is a long text.\")\n * console.log(result.lines)\n * // [\"Hello, world! This is a long text th-\", \"at needs wrapping.\"]\n * ```\n */\n\n// =============================================================================\n// Profiles - Hardware configurations for different glasses\n// =============================================================================\n\nexport type {\n DisplayProfile,\n FontMetrics,\n UniformScriptWidths,\n FallbackConfig,\n DisplayConstraints,\n ScriptType,\n} from \"./profiles\";\n\nexport { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX } from \"./profiles\";\n\n// G2 Profile\nexport { G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX } from \"./profiles\";\n\n// Z100 Profile\nexport { Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX } from \"./profiles\";\n\n// Mentra Nex Profile (a.k.a. Mentra Display)\nexport { NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX } from \"./profiles\";\n\n// Import for factory functions\nimport { G1_PROFILE_LEGACY, G2_PROFILE, Z100_PROFILE, NEX_PROFILE } from \"./profiles\";\n\n// =============================================================================\n// Measurer - Pixel-accurate text measurement\n// =============================================================================\n\nexport { TextMeasurer } from \"./measurer\";\nexport type { CharMeasurement, TextMeasurement } from \"./measurer\";\n\n// Script detection utilities\nexport {\n detectScript,\n isCJKCharacter,\n isKoreanCharacter,\n isUniformWidthScript,\n isUnsupportedScript,\n needsHyphenForBreak,\n SCRIPT_RANGES,\n} from \"./measurer\";\n\n// =============================================================================\n// Wrapper - Text wrapping with multiple break modes\n// =============================================================================\n\nexport { TextWrapper } from \"./wrapper\";\nexport type { WrapOptions, WrapResult, LineMetrics, BreakMode } from \"./wrapper\";\nexport { DEFAULT_WRAP_OPTIONS } from \"./wrapper\";\n\n// =============================================================================\n// Helpers - Optional convenience utilities\n// =============================================================================\n\nexport { DisplayHelpers, ScrollView } from \"./helpers\";\nexport type { TruncateResult, Page, Chunk, ScrollPosition, ScrollViewport } from \"./helpers\";\n\n// =============================================================================\n// Composer - Multi-column layout composition\n// =============================================================================\n\nexport { ColumnComposer, createColumnComposer } from \"./composer\";\nexport type { ColumnConfig, ComposeOptions, ComposeResult } from \"./composer\";\n\n// =============================================================================\n// Convenience factory functions\n// =============================================================================\n\nimport { TextMeasurer } from \"./measurer\";\nimport { TextWrapper } from \"./wrapper\";\nimport { DisplayHelpers } from \"./helpers\";\nimport { ColumnComposer } from \"./composer\";\nimport { G1_PROFILE } from \"./profiles\";\nimport type { DisplayProfile } from \"./profiles\";\nimport type { WrapOptions } from \"./wrapper\";\n\n/**\n * Create a complete display toolkit for a given profile.\n *\n * @param profile - Display profile (defaults to G1)\n * @param wrapOptions - Default wrap options\n * @returns Object with measurer, wrapper, and helpers\n *\n * @example\n * ```typescript\n * const { measurer, wrapper, helpers } = createDisplayToolkit()\n * const lines = wrapper.wrapToLines(\"Hello, world!\")\n * ```\n */\nexport function createDisplayToolkit(\n profile: DisplayProfile = G1_PROFILE,\n wrapOptions?: WrapOptions,\n): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n const measurer = new TextMeasurer(profile);\n const wrapper = new TextWrapper(measurer, wrapOptions);\n const helpers = new DisplayHelpers(measurer, wrapper);\n const composer = new ColumnComposer(profile, wrapOptions?.breakMode || \"word\");\n\n return {\n measurer,\n wrapper,\n helpers,\n composer,\n profile,\n };\n}\n\n/**\n * Create a G1-configured display toolkit with character breaking.\n * This is the recommended setup for captions and similar high-utilization use cases.\n *\n * @returns Object with measurer, wrapper, and helpers configured for G1\n *\n * @example\n * ```typescript\n * const { wrapper, composer } = createG1Toolkit()\n * const result = wrapper.wrap(\"Your text here\")\n * const columns = composer.composeDoubleTextWall(\"Left\", \"Right\")\n * ```\n */\nexport function createG1Toolkit(): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n return createDisplayToolkit(G1_PROFILE, {\n breakMode: \"character-no-hyphen\",\n });\n}\n\n/**\n * Create a G1-configured display toolkit for LEGACY mobile clients.\n *\n * Use this when the mobile client has old wrapping logic that re-wraps\n * text received from the cloud. This profile uses a reduced display width\n * (~522px instead of 576px) to prevent double-wrapping overflow.\n *\n * @returns Object with measurer, wrapper, and helpers configured for legacy G1 clients\n *\n * @example\n * ```typescript\n * // For old mobile clients that double-wrap\n * const { wrapper } = createG1LegacyToolkit()\n * const result = wrapper.wrap(\"Your text here\")\n * // Lines will be shorter to account for mobile re-wrapping\n * ```\n */\nexport function createG1LegacyToolkit(): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n return createDisplayToolkit(G1_PROFILE_LEGACY, {\n breakMode: \"character-no-hyphen\",\n });\n}\n\n/**\n * Create a G2-configured display toolkit with character breaking.\n * G2 uses EvenHub protocol with the same display hardware as G1.\n *\n * @returns Object with measurer, wrapper, and helpers configured for Even G2\n *\n * @example\n * ```typescript\n * const { wrapper } = createG2Toolkit()\n * const result = wrapper.wrap(\"Your text here\")\n * ```\n */\nexport function createG2Toolkit(): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n return createDisplayToolkit(G2_PROFILE, {\n breakMode: \"character-no-hyphen\",\n });\n}\n\n/**\n * Create a Z100-configured display toolkit with character breaking.\n *\n * @returns Object with measurer, wrapper, and helpers configured for Vuzix Z100\n *\n * @example\n * ```typescript\n * const { wrapper } = createZ100Toolkit()\n * const result = wrapper.wrap(\"Your text here\")\n * ```\n */\nexport function createZ100Toolkit(): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n return createDisplayToolkit(Z100_PROFILE, {\n breakMode: \"character-no-hyphen\",\n });\n}\n\n/**\n * Create a Mentra Nex-configured display toolkit with character breaking.\n * Also known as \"Mentra Display\".\n *\n * @returns Object with measurer, wrapper, and helpers configured for Mentra Nex\n *\n * @example\n * ```typescript\n * const { wrapper } = createNexToolkit()\n * const result = wrapper.wrap(\"Your text here\")\n * ```\n */\nexport function createNexToolkit(): {\n measurer: TextMeasurer;\n wrapper: TextWrapper;\n helpers: DisplayHelpers;\n composer: ColumnComposer;\n profile: DisplayProfile;\n} {\n return createDisplayToolkit(NEX_PROFILE, {\n breakMode: \"character-no-hyphen\",\n });\n}\n"
17
17
  ],
18
- "mappings": "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",
19
- "debugId": "78924D4AB945D2A664756E2164756E21",
18
+ "mappings": "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",
19
+ "debugId": "1CC16860F86733F564756E2164756E21",
20
20
  "names": []
21
21
  }
package/dist/index.js CHANGED
@@ -164,7 +164,7 @@ function tryCreateBetterStackTransport() {
164
164
  }
165
165
  function createLogger(config) {
166
166
  const { pinoLevel, verbose } = resolveConfig(config);
167
- const NODE_ENV = "development";
167
+ const NODE_ENV = "isaiah";
168
168
  const PORTER_APP_NAME = process.env.PORTER_APP_NAME || "cloud-local";
169
169
  const streams = [];
170
170
  if (pinoLevel !== "silent") {
@@ -10320,4 +10320,4 @@ export {
10320
10320
  AnimationUtils
10321
10321
  };
10322
10322
 
10323
- //# debugId=8B8711F9E2BD9BA564756E2164756E21
10323
+ //# debugId=69C890D7C0BEBFE864756E2164756E21