privateboard 0.1.38 → 0.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot.js +327 -50
- package/dist/boot.js.map +1 -1
- package/dist/cli.js +327 -50
- package/dist/cli.js.map +1 -1
- package/dist/server.js +201 -40
- package/dist/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/public/__avatar3d_test.html +156 -0
- package/public/agent-overlay.css +14 -6
- package/public/agent-overlay.js +6 -6
- package/public/agent-profile.css +9 -12
- package/public/agent-profile.js +91 -38
- package/public/app.js +471 -528
- package/public/avatar-3d-snap.js +205 -0
- package/public/avatar-3d.js +836 -0
- package/public/avatar-customizer.html +274 -0
- package/public/avatar3d-editor.css +240 -0
- package/public/avatar3d-editor.js +484 -0
- package/public/avatars/3d/chair.png +0 -0
- package/public/avatars/3d/first-principles.png +0 -0
- package/public/avatars/3d/historian.png +0 -0
- package/public/avatars/3d/long-horizon.png +0 -0
- package/public/avatars/3d/phenomenologist.png +0 -0
- package/public/avatars/3d/socrates.png +0 -0
- package/public/avatars/3d/user-empathy.png +0 -0
- package/public/avatars/3d/value-investor.png +0 -0
- package/public/core-avatars.js +86 -0
- package/public/home-3d-loader.js +15 -4
- package/public/home-3d-mock.js +25 -14
- package/public/home.html +78 -16
- package/public/i18n.js +8 -4
- package/public/icons/avatar_1779855104027.glb +0 -0
- package/public/icons/logo.png +0 -0
- package/public/icons/new-style.glb +0 -0
- package/public/icons/new-style2.glb +0 -0
- package/public/icons/new-style3.glb +0 -0
- package/public/icons/new-style4.glb +0 -0
- package/public/icons/new-style5.glb +0 -0
- package/public/icons/new-style6.glb +0 -0
- package/public/icons/office.glb +0 -0
- package/public/icons/stuff.glb +0 -0
- package/public/index.html +169 -141
- package/public/magazine.html +1 -1
- package/public/new-agent.js +46 -20
- package/public/newspaper.html +1 -1
- package/public/office-viewer.html +340 -0
- package/public/ppt.html +1 -1
- package/public/stuff-viewer.html +330 -0
- package/public/thread.css +16 -15
- package/public/user-settings.css +7 -31
- package/public/user-settings.js +75 -89
- package/public/vendor/BufferGeometryUtils.js +1434 -0
- package/public/vendor/DRACOLoader.js +739 -0
- package/public/vendor/GLTFLoader.js +4860 -0
- package/public/vendor/RoomEnvironment.js +185 -0
- package/public/vendor/SkeletonUtils.js +496 -0
- package/public/vendor/draco/draco_decoder.js +34 -0
- package/public/vendor/draco/draco_decoder.wasm +0 -0
- package/public/vendor/draco/draco_encoder.js +33 -0
- package/public/vendor/draco/draco_wasm_wrapper.js +117 -0
- package/public/vendor/meshopt_decoder.module.js +196 -0
- package/public/voice-3d-banner.js +19 -7
- package/public/voice-3d.js +1407 -432
- package/public/voice-replay.js +21 -0
- package/public/avatar-skill.js +0 -629
- package/public/avatars/chair-blink.svg +0 -1
- package/public/avatars/chair.svg +0 -1
- package/public/avatars/first-principles.svg +0 -1
- package/public/avatars/historian.svg +0 -1
- package/public/avatars/long-horizon.svg +0 -1
- package/public/avatars/phenomenologist.svg +0 -1
- package/public/avatars/socrates.svg +0 -1
- package/public/avatars/user-empathy.svg +0 -1
- package/public/avatars/value-investor.svg +0 -1
- package/public/icons/folded-sidebar.png +0 -0
package/public/home-3d-mock.js
CHANGED
|
@@ -32,22 +32,21 @@
|
|
|
32
32
|
with the moderator chair as the bottom-row anchor. 7 seats total
|
|
33
33
|
fills the ring without empty arcs. */
|
|
34
34
|
const CAST = [
|
|
35
|
-
{ id: "chair", name: "Chair", avatarPath: "/avatars/chair.
|
|
36
|
-
{ id: "socrates", name: "Socrates", avatarPath: "/avatars/socrates.
|
|
37
|
-
{ id: "first-principles", name: "First Principles", avatarPath: "/avatars/first-principles.
|
|
38
|
-
{ id: "value-investor", name: "Value Investor", avatarPath: "/avatars/value-investor.
|
|
39
|
-
{ id: "user-empathy", name: "User-Empathy", avatarPath: "/avatars/user-empathy.
|
|
40
|
-
{ id: "long-horizon", name: "Long Horizon", avatarPath: "/avatars/long-horizon.
|
|
41
|
-
{ id: "phenomenologist", name: "Phenomenologist", avatarPath: "/avatars/phenomenologist.
|
|
35
|
+
{ id: "chair", name: "Chair", avatarPath: "/avatars/3d/chair.png", roleKind: "chair" },
|
|
36
|
+
{ id: "socrates", name: "Socrates", avatarPath: "/avatars/3d/socrates.png", roleKind: "director" },
|
|
37
|
+
{ id: "first-principles", name: "First Principles", avatarPath: "/avatars/3d/first-principles.png", roleKind: "director" },
|
|
38
|
+
{ id: "value-investor", name: "Value Investor", avatarPath: "/avatars/3d/value-investor.png", roleKind: "director" },
|
|
39
|
+
{ id: "user-empathy", name: "User-Empathy", avatarPath: "/avatars/3d/user-empathy.png", roleKind: "director" },
|
|
40
|
+
{ id: "long-horizon", name: "Long Horizon", avatarPath: "/avatars/3d/long-horizon.png", roleKind: "director" },
|
|
41
|
+
{ id: "phenomenologist", name: "Phenomenologist", avatarPath: "/avatars/3d/phenomenologist.png", roleKind: "director" },
|
|
42
42
|
];
|
|
43
43
|
|
|
44
|
-
/*
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
instead of the cleaner library look "research" had. */
|
|
44
|
+
/* Which of the five tone-keyed rooms (voice-3d.js) the homepage hero
|
|
45
|
+
shows. This is the FINAL homepage scene · "brainstorm" — the cozy
|
|
46
|
+
modern interior (daylight windows + framed art on cream walls, a real
|
|
47
|
+
3D oak chest + sage sofa) on the warm-oak plank floor (set on
|
|
48
|
+
`.hero-3d-stage` in home.html). All five rooms were redesigned +
|
|
49
|
+
signed off; brainstorm is the one we showcase here. */
|
|
51
50
|
const DEFAULT_MODE = "brainstorm";
|
|
52
51
|
|
|
53
52
|
/* Director rotation cadence. Long enough for the eye to register
|
|
@@ -123,6 +122,18 @@ export function startMockDriver() {
|
|
|
123
122
|
const VS3D = window.VoiceStage3D;
|
|
124
123
|
if (!VS3D || typeof VS3D.update !== "function") return () => {};
|
|
125
124
|
|
|
125
|
+
// Decorate CAST with the canonical avatar3d configs · without this
|
|
126
|
+
// the chair + directors render as RNG-drawn random faces instead of
|
|
127
|
+
// the seeded looks the user sees in the in-app voice room. Source:
|
|
128
|
+
// window.PB_CORE_AVATARS (public/core-avatars.js, loaded by home.html
|
|
129
|
+
// before this driver). Idempotent · re-walks on every driver start.
|
|
130
|
+
if (window.PB_CORE_AVATARS) {
|
|
131
|
+
for (const m of CAST) {
|
|
132
|
+
const cfg = window.PB_CORE_AVATARS[m.id];
|
|
133
|
+
if (cfg && !m.avatar3d) m.avatar3d = cfg;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
126
137
|
const positions = computeSeatPositions(CAST);
|
|
127
138
|
// Director ids only · the chair never speaks in this rotation
|
|
128
139
|
// (chairs in the real app intervene at round boundaries; the
|
package/public/home.html
CHANGED
|
@@ -1382,8 +1382,13 @@
|
|
|
1382
1382
|
the brainstorm vars directly onto the stage host here. SVG
|
|
1383
1383
|
data URI is copied verbatim from
|
|
1384
1384
|
index.html:8674 (brainstorm tile). */
|
|
1385
|
-
|
|
1386
|
-
|
|
1385
|
+
/* FINAL · matched to DEFAULT_MODE "brainstorm" in home-3d-mock.js.
|
|
1386
|
+
The warm-oak plank floor (mirrors index.html's
|
|
1387
|
+
`.roundtable-stage[data-floor="brainstorm"]`) under the cozy
|
|
1388
|
+
modern-interior walls — directors in a warm furnished lounge.
|
|
1389
|
+
This is the homepage's showcase scene. */
|
|
1390
|
+
--floor-bg: #C8A877;
|
|
1391
|
+
--floor-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='128' height='64' shape-rendering='crispEdges'><rect width='128' height='64' fill='%23C8A877'/><rect y='16' width='128' height='16' fill='%23BE9E6C'/><rect y='48' width='128' height='16' fill='%23BE9E6C'/><rect y='0' width='128' height='1' fill='%23D8BC8C'/><rect y='16' width='128' height='1' fill='%23D8BC8C'/><rect y='32' width='128' height='1' fill='%23D8BC8C'/><rect y='48' width='128' height='1' fill='%23D8BC8C'/><rect y='15' width='128' height='1' fill='%239C7E50'/><rect y='31' width='128' height='1' fill='%239C7E50'/><rect y='47' width='128' height='1' fill='%239C7E50'/><rect y='63' width='128' height='1' fill='%239C7E50'/><rect x='40' y='0' width='1' height='16' fill='%239C7E50'/><rect x='96' y='16' width='1' height='16' fill='%239C7E50'/><rect x='20' y='32' width='1' height='16' fill='%239C7E50'/><rect x='72' y='48' width='1' height='16' fill='%239C7E50'/><rect x='10' y='6' width='14' height='1' fill='%23B8945E'/><rect x='60' y='22' width='18' height='1' fill='%23B8945E'/><rect x='100' y='40' width='14' height='1' fill='%23B8945E'/><rect x='30' y='56' width='16' height='1' fill='%23B8945E'/></svg>");
|
|
1387
1392
|
}
|
|
1388
1393
|
.hero-3d-stage canvas {
|
|
1389
1394
|
width: 100% !important;
|
|
@@ -1414,12 +1419,55 @@
|
|
|
1414
1419
|
}
|
|
1415
1420
|
.hero-3d-hint.is-visible { opacity: 0.85; }
|
|
1416
1421
|
|
|
1422
|
+
/* Loading veil · covers the stage while the 3D bundle downloads +
|
|
1423
|
+
mounts. The static poster is the intended cover for that gap, but
|
|
1424
|
+
when it's absent the section would sit blank during the ~500KB
|
|
1425
|
+
download — so the veil fills it with a spinner + caption. Revealed
|
|
1426
|
+
+ torn down by home-3d-loader.js; only shown on devices that
|
|
1427
|
+
actually load 3D (no perpetual spinner on skip). z-index above the
|
|
1428
|
+
poster/stage so it covers both until `[data-mounted]` fades it. */
|
|
1429
|
+
.hero-3d-loading {
|
|
1430
|
+
position: absolute;
|
|
1431
|
+
inset: 0;
|
|
1432
|
+
z-index: 3;
|
|
1433
|
+
display: flex;
|
|
1434
|
+
flex-direction: column;
|
|
1435
|
+
align-items: center;
|
|
1436
|
+
justify-content: center;
|
|
1437
|
+
gap: 14px;
|
|
1438
|
+
background: var(--panel-2);
|
|
1439
|
+
transition: opacity 0.4s ease-out;
|
|
1440
|
+
}
|
|
1441
|
+
.hero-3d-loading[hidden] { display: none; }
|
|
1442
|
+
.hero-3d[data-mounted] .hero-3d-loading {
|
|
1443
|
+
opacity: 0;
|
|
1444
|
+
pointer-events: none;
|
|
1445
|
+
}
|
|
1446
|
+
.hero-3d-spinner {
|
|
1447
|
+
width: 26px;
|
|
1448
|
+
height: 26px;
|
|
1449
|
+
border: 2px solid var(--line-bright);
|
|
1450
|
+
border-top-color: var(--lime);
|
|
1451
|
+
border-radius: 50%;
|
|
1452
|
+
animation: hero-3d-spin 0.8s linear infinite;
|
|
1453
|
+
}
|
|
1454
|
+
@keyframes hero-3d-spin { to { transform: rotate(360deg); } }
|
|
1455
|
+
.hero-3d-loading-label {
|
|
1456
|
+
font-family: var(--mono, "Inter", system-ui, sans-serif);
|
|
1457
|
+
font-size: 10px;
|
|
1458
|
+
letter-spacing: 0.16em;
|
|
1459
|
+
text-transform: uppercase;
|
|
1460
|
+
color: var(--text-faint);
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1417
1463
|
/* `prefers-reduced-motion` · the loader honours this and never
|
|
1418
1464
|
mounts the scene · the poster stays. Skip CSS transitions too so
|
|
1419
1465
|
nothing animates if the loader fails halfway and toggles classes. */
|
|
1420
1466
|
@media (prefers-reduced-motion: reduce) {
|
|
1421
1467
|
.hero-3d-poster,
|
|
1422
|
-
.hero-3d-hint
|
|
1468
|
+
.hero-3d-hint,
|
|
1469
|
+
.hero-3d-loading { transition: none; }
|
|
1470
|
+
.hero-3d-spinner { animation: none; }
|
|
1423
1471
|
}
|
|
1424
1472
|
|
|
1425
1473
|
/* Narrow viewports (phone) · the round table compresses into a
|
|
@@ -1622,7 +1670,7 @@
|
|
|
1622
1670
|
|
|
1623
1671
|
<div class="hero-actions">
|
|
1624
1672
|
<a href="#install" class="big-btn primary">[ ◆ Convene a Room ]</a>
|
|
1625
|
-
<a href="https://github.com/kaysaith1900/privateboard/releases/download/v0.1.
|
|
1673
|
+
<a href="https://github.com/kaysaith1900/privateboard/releases/download/v0.1.41/PrivateBoard-0.1.41-arm64.dmg"
|
|
1626
1674
|
class="big-btn secondary"
|
|
1627
1675
|
download
|
|
1628
1676
|
aria-label="Download PrivateBoard for macOS (Apple Silicon)"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M12 3v12"/><polyline points="6 11 12 17 18 11"/><path d="M5 21h14"/></svg> Download for Mac</a>
|
|
@@ -1636,7 +1684,7 @@
|
|
|
1636
1684
|
<div class="cast-card" data-agent="socrates">
|
|
1637
1685
|
<div class="cast-card-frame">
|
|
1638
1686
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1639
|
-
<img src="avatars/socrates.
|
|
1687
|
+
<img src="avatars/3d/socrates.png" alt="Socrates">
|
|
1640
1688
|
</div>
|
|
1641
1689
|
<div class="cast-card-name">Socrates</div>
|
|
1642
1690
|
<div class="cast-card-tag">// skeptic</div>
|
|
@@ -1644,7 +1692,7 @@
|
|
|
1644
1692
|
<div class="cast-card" data-agent="first-principles">
|
|
1645
1693
|
<div class="cast-card-frame">
|
|
1646
1694
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1647
|
-
<img src="avatars/first-principles.
|
|
1695
|
+
<img src="avatars/3d/first-principles.png" alt="First Principles">
|
|
1648
1696
|
</div>
|
|
1649
1697
|
<div class="cast-card-name">First Principles</div>
|
|
1650
1698
|
<div class="cast-card-tag">// physicist</div>
|
|
@@ -1652,7 +1700,7 @@
|
|
|
1652
1700
|
<div class="cast-card" data-agent="value-investor">
|
|
1653
1701
|
<div class="cast-card-frame">
|
|
1654
1702
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1655
|
-
<img src="avatars/value-investor.
|
|
1703
|
+
<img src="avatars/3d/value-investor.png" alt="Value Investor">
|
|
1656
1704
|
</div>
|
|
1657
1705
|
<div class="cast-card-name">Value Investor</div>
|
|
1658
1706
|
<div class="cast-card-tag">// patterns</div>
|
|
@@ -1660,7 +1708,7 @@
|
|
|
1660
1708
|
<div class="cast-card" data-agent="user-empathy">
|
|
1661
1709
|
<div class="cast-card-frame">
|
|
1662
1710
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1663
|
-
<img src="avatars/user-empathy.
|
|
1711
|
+
<img src="avatars/3d/user-empathy.png" alt="User-Empathy">
|
|
1664
1712
|
</div>
|
|
1665
1713
|
<div class="cast-card-name">User-Empathy</div>
|
|
1666
1714
|
<div class="cast-card-tag">// advocate</div>
|
|
@@ -1668,7 +1716,7 @@
|
|
|
1668
1716
|
<div class="cast-card" data-agent="long-horizon">
|
|
1669
1717
|
<div class="cast-card-frame">
|
|
1670
1718
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1671
|
-
<img src="avatars/long-horizon.
|
|
1719
|
+
<img src="avatars/3d/long-horizon.png" alt="Long Horizon">
|
|
1672
1720
|
</div>
|
|
1673
1721
|
<div class="cast-card-name">Long Horizon</div>
|
|
1674
1722
|
<div class="cast-card-tag">// strategist</div>
|
|
@@ -1676,7 +1724,7 @@
|
|
|
1676
1724
|
<div class="cast-card" data-agent="phenomenologist">
|
|
1677
1725
|
<div class="cast-card-frame">
|
|
1678
1726
|
<span class="cc-corner cc-tl"></span><span class="cc-corner cc-br"></span>
|
|
1679
|
-
<img src="avatars/phenomenologist.
|
|
1727
|
+
<img src="avatars/3d/phenomenologist.png" alt="Phenomenologist">
|
|
1680
1728
|
</div>
|
|
1681
1729
|
<div class="cast-card-name">Phenomenologist</div>
|
|
1682
1730
|
<div class="cast-card-tag">// observer</div>
|
|
@@ -1816,6 +1864,14 @@
|
|
|
1816
1864
|
</picture>
|
|
1817
1865
|
<div class="hero-3d-stage" data-hero-3d-stage hidden></div>
|
|
1818
1866
|
<div class="hero-3d-hint" data-hero-3d-hint hidden>drag to look around</div>
|
|
1867
|
+
<!-- Loading veil · home-3d-loader.js reveals this the moment it
|
|
1868
|
+
commits to downloading the 3D bundle (~500KB three.js +
|
|
1869
|
+
voice-3d) and tears it down on mount / failure. Hidden by
|
|
1870
|
+
default so devices that skip 3D never see a spinner. -->
|
|
1871
|
+
<div class="hero-3d-loading" data-hero-3d-loading hidden aria-hidden="true">
|
|
1872
|
+
<span class="hero-3d-spinner"></span>
|
|
1873
|
+
<span class="hero-3d-loading-label">Rendering the round table…</span>
|
|
1874
|
+
</div>
|
|
1819
1875
|
</div>
|
|
1820
1876
|
</section>
|
|
1821
1877
|
|
|
@@ -1833,42 +1889,42 @@
|
|
|
1833
1889
|
<!-- LEFT · the standing six in a 3×2 grid (display-only) -->
|
|
1834
1890
|
<div class="cast-directors">
|
|
1835
1891
|
<div class="bento-cell bento-director" data-agent="socrates">
|
|
1836
|
-
<img class="bento-director-img" src="avatars/socrates.
|
|
1892
|
+
<img class="bento-director-img" src="avatars/3d/socrates.png" alt="Socrates">
|
|
1837
1893
|
<div class="bento-director-tag">// skeptic</div>
|
|
1838
1894
|
<div class="bento-director-name">Socrates</div>
|
|
1839
1895
|
<div class="bento-director-desc">Three layers deep on every assumption.</div>
|
|
1840
1896
|
<div class="bento-director-model">claude-opus-4.7</div>
|
|
1841
1897
|
</div>
|
|
1842
1898
|
<div class="bento-cell bento-director" data-agent="first-principles">
|
|
1843
|
-
<img class="bento-director-img" src="avatars/first-principles.
|
|
1899
|
+
<img class="bento-director-img" src="avatars/3d/first-principles.png" alt="First Principles">
|
|
1844
1900
|
<div class="bento-director-tag">// physicist</div>
|
|
1845
1901
|
<div class="bento-director-name">First Principles</div>
|
|
1846
1902
|
<div class="bento-director-desc">Strips problems to their primitives.</div>
|
|
1847
1903
|
<div class="bento-director-model">gpt-5.5-pro</div>
|
|
1848
1904
|
</div>
|
|
1849
1905
|
<div class="bento-cell bento-director" data-agent="value-investor">
|
|
1850
|
-
<img class="bento-director-img" src="avatars/value-investor.
|
|
1906
|
+
<img class="bento-director-img" src="avatars/3d/value-investor.png" alt="Value Investor">
|
|
1851
1907
|
<div class="bento-director-tag">// patterns</div>
|
|
1852
1908
|
<div class="bento-director-name">Value Investor</div>
|
|
1853
1909
|
<div class="bento-director-desc">Reads every judgment through a ten-year lens.</div>
|
|
1854
1910
|
<div class="bento-director-model">gemini-3.1-pro</div>
|
|
1855
1911
|
</div>
|
|
1856
1912
|
<div class="bento-cell bento-director" data-agent="user-empathy">
|
|
1857
|
-
<img class="bento-director-img" src="avatars/user-empathy.
|
|
1913
|
+
<img class="bento-director-img" src="avatars/3d/user-empathy.png" alt="User-Empathy">
|
|
1858
1914
|
<div class="bento-director-tag">// advocate</div>
|
|
1859
1915
|
<div class="bento-director-name">User-Empathy</div>
|
|
1860
1916
|
<div class="bento-director-desc">Asks why anyone would actually use this.</div>
|
|
1861
1917
|
<div class="bento-director-model">grok-4.3</div>
|
|
1862
1918
|
</div>
|
|
1863
1919
|
<div class="bento-cell bento-director" data-agent="long-horizon">
|
|
1864
|
-
<img class="bento-director-img" src="avatars/long-horizon.
|
|
1920
|
+
<img class="bento-director-img" src="avatars/3d/long-horizon.png" alt="Long Horizon">
|
|
1865
1921
|
<div class="bento-director-tag">// strategist</div>
|
|
1866
1922
|
<div class="bento-director-name">Long Horizon</div>
|
|
1867
1923
|
<div class="bento-director-desc">Reads everything on a hundred-year scale.</div>
|
|
1868
1924
|
<div class="bento-director-model">deepseek-v4-pro</div>
|
|
1869
1925
|
</div>
|
|
1870
1926
|
<div class="bento-cell bento-director" data-agent="phenomenologist">
|
|
1871
|
-
<img class="bento-director-img" src="avatars/phenomenologist.
|
|
1927
|
+
<img class="bento-director-img" src="avatars/3d/phenomenologist.png" alt="Phenomenologist">
|
|
1872
1928
|
<div class="bento-director-tag">// observer</div>
|
|
1873
1929
|
<div class="bento-director-name">Phenomenologist</div>
|
|
1874
1930
|
<div class="bento-director-desc">Begins from experience itself.</div>
|
|
@@ -2226,6 +2282,12 @@
|
|
|
2226
2282
|
`voice-3d.js` (which downloads three.module.min.js + OrbitControls,
|
|
2227
2283
|
~488 KB total). Visitors who can't or shouldn't run WebGL stay on
|
|
2228
2284
|
the poster and never download the 3D bundle. -->
|
|
2285
|
+
<!-- Canonical chair + director avatar3d configs · populated onto
|
|
2286
|
+
window.PB_CORE_AVATARS so the dynamically-imported home-3d-mock.js
|
|
2287
|
+
can decorate its CAST with the same look the in-app voice room
|
|
2288
|
+
and `src/seed/*.ts` ship. Classic-script defer · evaluates before
|
|
2289
|
+
the ESM home-3d-loader's `import('/home-3d-mock.js')` resolves. -->
|
|
2290
|
+
<script src="core-avatars.js" defer></script>
|
|
2229
2291
|
<script type="module" src="home-3d-loader.js" defer></script>
|
|
2230
2292
|
|
|
2231
2293
|
</body>
|
package/public/i18n.js
CHANGED
|
@@ -675,6 +675,7 @@
|
|
|
675
675
|
head_record_label: "Record meeting",
|
|
676
676
|
head_record_stop_tip: "Stop recording · save .mp4",
|
|
677
677
|
head_record_stop_label: "Stop recording",
|
|
678
|
+
head_replay_stop_label: "Stop",
|
|
678
679
|
rec_pill_label: "REC",
|
|
679
680
|
rec_error_toast: "Couldn't start the meeting recording. Check screen-capture permission and try again.",
|
|
680
681
|
rec_exit_class: "recording · choose",
|
|
@@ -1260,7 +1261,7 @@ When the room ___, raise an objection.`,
|
|
|
1260
1261
|
us_user_tag: "▸ User",
|
|
1261
1262
|
us_user_deck: "how the boardroom addresses you and what it knows about your context.",
|
|
1262
1263
|
us_avatar: "Avatar",
|
|
1263
|
-
|
|
1264
|
+
us_avatar3d: "3D avatar",
|
|
1264
1265
|
us_name: "Name",
|
|
1265
1266
|
us_about: "About you",
|
|
1266
1267
|
us_intro_ph: "A line or two about your role, what you tend to think about, what you're working on. Directors will keep this in mind across rooms.",
|
|
@@ -2046,6 +2047,7 @@ When the room ___, raise an objection.`,
|
|
|
2046
2047
|
head_record_label: "录制会议",
|
|
2047
2048
|
head_record_stop_tip: "停止录制 · 保存 .mp4",
|
|
2048
2049
|
head_record_stop_label: "停止录制",
|
|
2050
|
+
head_replay_stop_label: "停止",
|
|
2049
2051
|
rec_pill_label: "录制中",
|
|
2050
2052
|
rec_error_toast: "无法开始会议录制。请检查屏幕录制权限后重试。",
|
|
2051
2053
|
rec_exit_class: "录制中 · 请选择",
|
|
@@ -2611,7 +2613,7 @@ When the room ___, raise an objection.`,
|
|
|
2611
2613
|
us_user_tag: "▸ 用户",
|
|
2612
2614
|
us_user_deck: "董事会如何称呼你,以及它需要知道的背景。",
|
|
2613
2615
|
us_avatar: "头像",
|
|
2614
|
-
|
|
2616
|
+
us_avatar3d: "3D 形象",
|
|
2615
2617
|
us_name: "姓名",
|
|
2616
2618
|
us_about: "关于你",
|
|
2617
2619
|
us_intro_ph: "一两句话写下你的角色、常思考的问题、手头项目。董事在每场会议里都会参考。",
|
|
@@ -3247,6 +3249,7 @@ When the room ___, raise an objection.`,
|
|
|
3247
3249
|
head_record_label: "ミーティングを録画",
|
|
3248
3250
|
head_record_stop_tip: "録画を停止 · .mp4 を保存",
|
|
3249
3251
|
head_record_stop_label: "録画を停止",
|
|
3252
|
+
head_replay_stop_label: "停止",
|
|
3250
3253
|
rec_pill_label: "録画中",
|
|
3251
3254
|
rec_error_toast: "ミーティングの録画を開始できませんでした。画面録画の権限を確認してください。",
|
|
3252
3255
|
rec_exit_class: "録画中 · 選択",
|
|
@@ -3594,7 +3597,7 @@ When the room ___, raise an objection.`,
|
|
|
3594
3597
|
us_user_tag: "▸ ユーザー",
|
|
3595
3598
|
us_user_deck: "ボードルームでの呼称と、文脈として保持される情報。",
|
|
3596
3599
|
us_avatar: "アバター",
|
|
3597
|
-
|
|
3600
|
+
us_avatar3d: "3Dアバター",
|
|
3598
3601
|
us_name: "名前",
|
|
3599
3602
|
us_about: "あなたについて",
|
|
3600
3603
|
us_intro_ph: "あなたの役割、考えていること、取り組んでいることを一文か二文。ディレクターはこれを会議室全体で意識します。",
|
|
@@ -4195,6 +4198,7 @@ When the room ___, raise an objection.`,
|
|
|
4195
4198
|
head_record_label: "Grabar reunión",
|
|
4196
4199
|
head_record_stop_tip: "Detener grabación · guardar .mp4",
|
|
4197
4200
|
head_record_stop_label: "Detener grabación",
|
|
4201
|
+
head_replay_stop_label: "Detener",
|
|
4198
4202
|
rec_pill_label: "GRAB.",
|
|
4199
4203
|
rec_error_toast: "No se pudo iniciar la grabación. Revisa el permiso de captura de pantalla e inténtalo de nuevo.",
|
|
4200
4204
|
rec_exit_class: "grabando · elige",
|
|
@@ -4542,7 +4546,7 @@ When the room ___, raise an objection.`,
|
|
|
4542
4546
|
us_user_tag: "▸ Usuario",
|
|
4543
4547
|
us_user_deck: "cómo te llama la sala y qué sabe sobre tu contexto.",
|
|
4544
4548
|
us_avatar: "Avatar",
|
|
4545
|
-
|
|
4549
|
+
us_avatar3d: "avatar 3D",
|
|
4546
4550
|
us_name: "Nombre",
|
|
4547
4551
|
us_about: "Sobre ti",
|
|
4548
4552
|
us_intro_ph: "Una línea o dos sobre tu rol, en qué piensas, en qué trabajas. Los directores lo tendrán presente en todas las salas.",
|
|
Binary file
|
package/public/icons/logo.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|