privateboard 0.1.13 → 0.1.16
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/cli.js +2623 -333
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/public/adjourn-overlay.css +6 -6
- package/public/agent-build-bgm.js +292 -0
- package/public/agent-overlay.css +14 -14
- package/public/agent-profile.css +408 -87
- package/public/agent-profile.js +254 -0
- package/public/app.js +2486 -384
- package/public/home.html +26 -26
- package/public/i18n.js +1890 -21
- package/public/icons/logo2.png +0 -0
- package/public/icons/private-board-vi.html +1716 -0
- package/public/index.html +2954 -1018
- package/public/magazine.html +12 -12
- package/public/new-agent.css +29 -29
- package/public/newspaper.html +20 -20
- package/public/onboarding.css +350 -272
- package/public/onboarding.js +614 -323
- package/public/quote-cta.css +4 -4
- package/public/report.html +2008 -1673
- package/public/room-settings.css +192 -24
- package/public/room-settings.js +5 -0
- package/public/share-cover-svg-creator.js +736 -0
- package/public/themes.css +0 -34
- package/public/typing-sfx.js +176 -3
- package/public/user-settings.css +50 -27
- package/public/user-settings.js +43 -14
- package/public/voice-onboarding.css +425 -0
- package/public/voice-onboarding.js +144 -0
- package/public/voice-replay.css +31 -38
- package/public/voice-replay.js +12 -11
package/public/voice-replay.css
CHANGED
|
@@ -17,14 +17,13 @@
|
|
|
17
17
|
.voice-replay-overlay {
|
|
18
18
|
position: fixed;
|
|
19
19
|
right: 24px;
|
|
20
|
-
/*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
bottom: 56px;
|
|
20
|
+
/* Voice Replay is launched from the floating `.input-bar` in
|
|
21
|
+
adjourned rooms (left-cluster Replay icon). The input-bar's
|
|
22
|
+
standard footprint is ~100px tall plus 14px bottom margin.
|
|
23
|
+
`bottom: 130px` lifts the panel clear of the bar so the user
|
|
24
|
+
keeps access to the input + the action icons while the player
|
|
25
|
+
is open. */
|
|
26
|
+
bottom: 130px;
|
|
28
27
|
z-index: 9300;
|
|
29
28
|
width: 380px;
|
|
30
29
|
max-width: calc(100vw - 32px);
|
|
@@ -52,7 +51,7 @@
|
|
|
52
51
|
display: inline-flex;
|
|
53
52
|
align-items: center;
|
|
54
53
|
gap: 6px;
|
|
55
|
-
font-size:
|
|
54
|
+
font-size: 10px;
|
|
56
55
|
font-weight: 700;
|
|
57
56
|
letter-spacing: 0.18em;
|
|
58
57
|
text-transform: uppercase;
|
|
@@ -95,34 +94,31 @@
|
|
|
95
94
|
/* Collapsed posture · the entire floating panel hides, freeing
|
|
96
95
|
the chat / round-table stage of any overlap. The user re-opens
|
|
97
96
|
by clicking the inline `.vr-inline-expand` pill that gets
|
|
98
|
-
slotted into the
|
|
99
|
-
Voice Replay
|
|
97
|
+
slotted into the input-bar's left cluster right next to the
|
|
98
|
+
Voice Replay icon. Audio keeps playing in the background. */
|
|
100
99
|
.voice-replay-overlay.is-collapsed {
|
|
101
100
|
display: none;
|
|
102
101
|
}
|
|
103
102
|
|
|
104
|
-
/* Inline replay control group ·
|
|
105
|
-
Expand) mounted into the
|
|
106
|
-
after Voice Replay when the floating panel
|
|
107
|
-
button
|
|
108
|
-
|
|
109
|
-
Follow-up
|
|
110
|
-
|
|
103
|
+
/* Inline replay control group · four buttons (Next / Pause /
|
|
104
|
+
Stop / Expand) mounted into the input-bar's left cluster right
|
|
105
|
+
after the Voice Replay icon when the floating panel collapses
|
|
106
|
+
into playback mode. Each button reuses `.ib-action` so the group
|
|
107
|
+
reads as a true sibling of Export / Voice Replay / Convene
|
|
108
|
+
Follow-up — same 32×32 frame, same hover-circle, same tooltip
|
|
109
|
+
register. The Expand button carries a small lime pulsing dot so
|
|
110
|
+
the user can locate "what's still active" at a glance. */
|
|
111
111
|
.vr-inline-group {
|
|
112
112
|
display: inline-flex;
|
|
113
113
|
align-items: center;
|
|
114
|
-
gap:
|
|
114
|
+
gap: 4px;
|
|
115
115
|
}
|
|
116
|
-
/*
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Replay / Convene Follow-up — just with bracket-wrapped glyphs
|
|
121
|
-
instead of trailing labels. The Expand button gets a small lime
|
|
122
|
-
pulsing dot tagged on the end so the user can locate "what's
|
|
123
|
-
still active" at a glance. */
|
|
116
|
+
/* The inline child SVG centres inside the `.ib-action` 32×32 frame
|
|
117
|
+
via the parent's `display: inline-flex; align-items: center;
|
|
118
|
+
justify-content: center;`. Drop the inline baseline gap so the
|
|
119
|
+
icon snaps to the geometric centre. */
|
|
124
120
|
.vr-inline-btn .vib-icon {
|
|
125
|
-
display: block;
|
|
121
|
+
display: block;
|
|
126
122
|
}
|
|
127
123
|
.vr-inline-expand {
|
|
128
124
|
display: inline-flex;
|
|
@@ -177,7 +173,7 @@
|
|
|
177
173
|
.vr-spinner-dots .vr-spinner-dot:nth-child(3) { animation-delay: 0.4s; }
|
|
178
174
|
.vr-spinner-text {
|
|
179
175
|
font-family: var(--mono);
|
|
180
|
-
font-size:
|
|
176
|
+
font-size: 10px;
|
|
181
177
|
font-weight: 700;
|
|
182
178
|
letter-spacing: 0.18em;
|
|
183
179
|
color: var(--text-soft);
|
|
@@ -228,7 +224,7 @@
|
|
|
228
224
|
}
|
|
229
225
|
.vr-speaker-name {
|
|
230
226
|
font-family: var(--font-human, var(--mono));
|
|
231
|
-
font-size:
|
|
227
|
+
font-size: 12px;
|
|
232
228
|
font-weight: 700;
|
|
233
229
|
letter-spacing: -0.005em;
|
|
234
230
|
color: var(--text);
|
|
@@ -241,7 +237,7 @@
|
|
|
241
237
|
font-weight: 500;
|
|
242
238
|
}
|
|
243
239
|
.vr-speaker-kind {
|
|
244
|
-
font-size:
|
|
240
|
+
font-size: 8px;
|
|
245
241
|
letter-spacing: 0.18em;
|
|
246
242
|
text-transform: uppercase;
|
|
247
243
|
color: var(--text-faint);
|
|
@@ -250,7 +246,7 @@
|
|
|
250
246
|
/* ─── Message preview · 2-line clamp ─── */
|
|
251
247
|
.vr-preview {
|
|
252
248
|
font-family: var(--font-human, var(--mono));
|
|
253
|
-
font-size:
|
|
249
|
+
font-size: 12px;
|
|
254
250
|
line-height: 1.4;
|
|
255
251
|
color: var(--text-soft);
|
|
256
252
|
letter-spacing: -0.003em;
|
|
@@ -311,7 +307,7 @@
|
|
|
311
307
|
border: 0.5px solid var(--line-bright);
|
|
312
308
|
color: var(--text);
|
|
313
309
|
font-family: var(--mono);
|
|
314
|
-
font-size:
|
|
310
|
+
font-size: 10px;
|
|
315
311
|
font-weight: 700;
|
|
316
312
|
letter-spacing: 0.12em;
|
|
317
313
|
text-transform: uppercase;
|
|
@@ -338,9 +334,6 @@
|
|
|
338
334
|
color: var(--text-soft);
|
|
339
335
|
cursor: pointer;
|
|
340
336
|
}
|
|
341
|
-
.vr-toggle input[type="checkbox"] {
|
|
342
|
-
accent-color: var(--lime, #6FB572);
|
|
343
|
-
}
|
|
344
337
|
|
|
345
338
|
/* ─── Key prompt / empty / done ─── */
|
|
346
339
|
.vr-key-prompt {
|
|
@@ -379,7 +372,7 @@
|
|
|
379
372
|
}
|
|
380
373
|
.vr-key-deck {
|
|
381
374
|
font-family: var(--font-human, var(--mono));
|
|
382
|
-
font-size:
|
|
375
|
+
font-size: 12px;
|
|
383
376
|
line-height: 1.45;
|
|
384
377
|
color: var(--text-soft);
|
|
385
378
|
letter-spacing: -0.003em;
|
|
@@ -602,7 +595,7 @@
|
|
|
602
595
|
background: var(--bg, #0A0A0A);
|
|
603
596
|
border: 0.5px solid var(--lime, #6FB572);
|
|
604
597
|
font-family: var(--mono);
|
|
605
|
-
font-size:
|
|
598
|
+
font-size: 8px;
|
|
606
599
|
font-weight: 700;
|
|
607
600
|
letter-spacing: 0.18em;
|
|
608
601
|
text-transform: uppercase;
|
package/public/voice-replay.js
CHANGED
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
STATE.overlay = null;
|
|
208
208
|
}
|
|
209
209
|
clearActiveHighlight();
|
|
210
|
-
removeInlineExpand(); // any inline pill in the
|
|
210
|
+
removeInlineExpand(); // any inline pill in the input-bar drops too
|
|
211
211
|
STATE.playlist = [];
|
|
212
212
|
STATE.prefetched = new Map();
|
|
213
213
|
setActive(null); // round-table stage clears its replay seat / subtitle
|
|
@@ -281,8 +281,9 @@
|
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
/** Doc-level handler for the inline replay control group in the
|
|
284
|
-
*
|
|
285
|
-
* so the overlay-scoped click delegate above can't
|
|
284
|
+
* input-bar's left cluster — those buttons are mounted OUTSIDE
|
|
285
|
+
* the overlay so the overlay-scoped click delegate above can't
|
|
286
|
+
* see them.
|
|
286
287
|
* Bound once per page lifetime; safe even when no replay is
|
|
287
288
|
* active (the buttons simply aren't in the DOM until
|
|
288
289
|
* toggleCollapsed mounts them). */
|
|
@@ -316,8 +317,8 @@
|
|
|
316
317
|
}
|
|
317
318
|
|
|
318
319
|
/** Collapse the player by hiding the floating overlay entirely +
|
|
319
|
-
* surfacing the inline replay control group in the
|
|
320
|
-
* right after
|
|
320
|
+
* surfacing the inline replay control group in the input-bar's
|
|
321
|
+
* left cluster, right after the Voice Replay icon. Audio
|
|
321
322
|
* keeps playing in the background; the user's content is no
|
|
322
323
|
* longer blocked.
|
|
323
324
|
*
|
|
@@ -343,7 +344,7 @@
|
|
|
343
344
|
* a no-op when the group is already present. */
|
|
344
345
|
function mountInlineExpand() {
|
|
345
346
|
if (document.querySelector("[data-vr-inline-group]")) return;
|
|
346
|
-
const replayBtn = document.querySelector("
|
|
347
|
+
const replayBtn = document.querySelector("[data-room-replay]");
|
|
347
348
|
if (!replayBtn) return;
|
|
348
349
|
const group = document.createElement("span");
|
|
349
350
|
group.className = "vr-inline-group";
|
|
@@ -391,10 +392,10 @@
|
|
|
391
392
|
</svg>
|
|
392
393
|
`;
|
|
393
394
|
group.innerHTML = `
|
|
394
|
-
<button type="button" class="
|
|
395
|
-
<button type="button" class="
|
|
396
|
-
<button type="button" class="
|
|
397
|
-
<button type="button" class="
|
|
395
|
+
<button type="button" class="ib-action vr-inline-btn" data-vr-inline-next aria-label="Next message" title="Next message">${NEXT_SVG}</button>
|
|
396
|
+
<button type="button" class="ib-action vr-inline-btn" data-vr-inline-pause aria-label="Pause" title="Pause"><span data-vib-pause-mark>${PAUSE_SVG}</span></button>
|
|
397
|
+
<button type="button" class="ib-action vr-inline-btn" data-vr-inline-stop aria-label="Stop replay" title="Stop replay">${STOP_SVG}</button>
|
|
398
|
+
<button type="button" class="ib-action vr-inline-btn vr-inline-expand" data-vr-inline-expand aria-label="Expand voice replay" title="Expand voice replay">${EXPAND_SVG}<span class="vie-pulse" aria-hidden="true"></span></button>
|
|
398
399
|
`;
|
|
399
400
|
replayBtn.insertAdjacentElement("afterend", group);
|
|
400
401
|
// Hide the original Voice Replay anchor while the inline group
|
|
@@ -413,7 +414,7 @@
|
|
|
413
414
|
// so the user can re-trigger the player. We stashed the prior
|
|
414
415
|
// inline display when we hid it; restore it (empty string ==
|
|
415
416
|
// CSS default).
|
|
416
|
-
const replayBtn = document.querySelector("
|
|
417
|
+
const replayBtn = document.querySelector("[data-room-replay]");
|
|
417
418
|
if (replayBtn) {
|
|
418
419
|
const prev = replayBtn.dataset.vrPrevDisplay;
|
|
419
420
|
replayBtn.style.display = (prev === undefined || prev === null) ? "" : prev;
|