privateboard 0.1.32 → 0.1.37
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 +482 -208
- package/dist/boot.js.map +1 -1
- package/dist/cli.js +482 -208
- package/dist/cli.js.map +1 -1
- package/dist/server.js +482 -208
- 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 +3 -2
- package/public/adjourn-overlay.css +8 -0
- package/public/agent-profile.css +46 -0
- package/public/agent-profile.js +247 -48
- package/public/app.js +799 -717
- package/public/avatars/chair-blink.svg +1 -0
- package/public/home-3d-loader.js +6 -0
- package/public/home.html +1 -1
- package/public/i18n.js +122 -0
- package/public/icons/folded-sidebar.png +0 -0
- package/public/index.html +898 -990
- package/public/report.html +27 -7
- package/public/room-settings.css +18 -0
- package/public/themes.css +11 -0
- package/public/user-settings.js +37 -20
- package/public/voice-3d-banner.js +110 -36
- package/public/voice-3d.js +206 -6
- package/public/icons/share.png +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg viewBox="120 128 272 272" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges" preserveAspectRatio="xMidYMid meet"><rect x="192" y="160" width="16" height="16" fill="#ce8a5a"/><rect x="208" y="160" width="16" height="16" fill="#ce8a5a"/><rect x="224" y="160" width="16" height="16" fill="#a35a32"/><rect x="240" y="160" width="16" height="16" fill="#a35a32"/><rect x="256" y="160" width="16" height="16" fill="#a35a32"/><rect x="272" y="160" width="16" height="16" fill="#a35a32"/><rect x="288" y="160" width="16" height="16" fill="#a35a32"/><rect x="304" y="160" width="16" height="16" fill="#a35a32"/><rect x="176" y="176" width="16" height="16" fill="#ce8a5a"/><rect x="192" y="176" width="16" height="16" fill="#ce8a5a"/><rect x="208" y="176" width="16" height="16" fill="#a35a32"/><rect x="224" y="176" width="16" height="16" fill="#a35a32"/><rect x="240" y="176" width="16" height="16" fill="#a35a32"/><rect x="256" y="176" width="16" height="16" fill="#a35a32"/><rect x="272" y="176" width="16" height="16" fill="#a35a32"/><rect x="288" y="176" width="16" height="16" fill="#a35a32"/><rect x="304" y="176" width="16" height="16" fill="#a35a32"/><rect x="320" y="176" width="16" height="16" fill="#a35a32"/><rect x="160" y="192" width="16" height="16" fill="#ce8a5a"/><rect x="176" y="192" width="16" height="16" fill="#ce8a5a"/><rect x="192" y="192" width="16" height="16" fill="#a35a32"/><rect x="208" y="192" width="16" height="16" fill="#a35a32"/><rect x="224" y="192" width="16" height="16" fill="#a35a32"/><rect x="240" y="192" width="16" height="16" fill="#a35a32"/><rect x="256" y="192" width="16" height="16" fill="#a35a32"/><rect x="272" y="192" width="16" height="16" fill="#a35a32"/><rect x="288" y="192" width="16" height="16" fill="#a35a32"/><rect x="304" y="192" width="16" height="16" fill="#a35a32"/><rect x="320" y="192" width="16" height="16" fill="#a35a32"/><rect x="336" y="192" width="16" height="16" fill="#a35a32"/><rect x="160" y="208" width="16" height="16" fill="#a35a32"/><rect x="176" y="208" width="16" height="16" fill="#a35a32"/><rect x="192" y="208" width="16" height="16" fill="#a35a32"/><rect x="208" y="208" width="16" height="16" fill="#a35a32"/><rect x="224" y="208" width="16" height="16" fill="#a35a32"/><rect x="240" y="208" width="16" height="16" fill="#a35a32"/><rect x="256" y="208" width="16" height="16" fill="#a35a32"/><rect x="272" y="208" width="16" height="16" fill="#a35a32"/><rect x="288" y="208" width="16" height="16" fill="#a35a32"/><rect x="304" y="208" width="16" height="16" fill="#a35a32"/><rect x="320" y="208" width="16" height="16" fill="#a35a32"/><rect x="336" y="208" width="16" height="16" fill="#a35a32"/><rect x="160" y="224" width="16" height="16" fill="#a35a32"/><rect x="176" y="224" width="16" height="16" fill="#a35a32"/><rect x="192" y="224" width="16" height="16" fill="#a35a32"/><rect x="208" y="224" width="16" height="16" fill="#1a0805"/><rect x="224" y="224" width="16" height="16" fill="#a35a32"/><rect x="240" y="224" width="16" height="16" fill="#a35a32"/><rect x="256" y="224" width="16" height="16" fill="#a35a32"/><rect x="272" y="224" width="16" height="16" fill="#a35a32"/><rect x="288" y="224" width="16" height="16" fill="#1a0805"/><rect x="304" y="224" width="16" height="16" fill="#a35a32"/><rect x="320" y="224" width="16" height="16" fill="#a35a32"/><rect x="336" y="224" width="16" height="16" fill="#a35a32"/><rect x="160" y="240" width="16" height="16" fill="#a35a32"/><rect x="176" y="240" width="16" height="16" fill="#a35a32"/><rect x="192" y="240" width="16" height="16" fill="#a35a32"/><rect x="208" y="240" width="16" height="16" fill="#a35a32"/><rect x="224" y="240" width="16" height="16" fill="#a35a32"/><rect x="240" y="240" width="16" height="16" fill="#a35a32"/><rect x="256" y="240" width="16" height="16" fill="#a35a32"/><rect x="272" y="240" width="16" height="16" fill="#a35a32"/><rect x="288" y="240" width="16" height="16" fill="#a35a32"/><rect x="304" y="240" width="16" height="16" fill="#a35a32"/><rect x="320" y="240" width="16" height="16" fill="#a35a32"/><rect x="336" y="240" width="16" height="16" fill="#a35a32"/><rect x="160" y="256" width="16" height="16" fill="#a35a32"/><rect x="176" y="256" width="16" height="16" fill="#a35a32"/><rect x="192" y="256" width="16" height="16" fill="#a35a32"/><rect x="208" y="256" width="16" height="16" fill="#a35a32"/><rect x="224" y="256" width="16" height="16" fill="#a35a32"/><rect x="240" y="256" width="16" height="16" fill="#a35a32"/><rect x="256" y="256" width="16" height="16" fill="#a35a32"/><rect x="272" y="256" width="16" height="16" fill="#a35a32"/><rect x="288" y="256" width="16" height="16" fill="#a35a32"/><rect x="304" y="256" width="16" height="16" fill="#a35a32"/><rect x="320" y="256" width="16" height="16" fill="#a35a32"/><rect x="336" y="256" width="16" height="16" fill="#a35a32"/><rect x="160" y="272" width="16" height="16" fill="#5a2a10"/><rect x="176" y="272" width="16" height="16" fill="#5a2a10"/><rect x="192" y="272" width="16" height="16" fill="#5a2a10"/><rect x="208" y="272" width="16" height="16" fill="#5a2a10"/><rect x="224" y="272" width="16" height="16" fill="#5a2a10"/><rect x="240" y="272" width="16" height="16" fill="#cfb56a"/><rect x="256" y="272" width="16" height="16" fill="#cfb56a"/><rect x="272" y="272" width="16" height="16" fill="#5a2a10"/><rect x="288" y="272" width="16" height="16" fill="#5a2a10"/><rect x="304" y="272" width="16" height="16" fill="#5a2a10"/><rect x="320" y="272" width="16" height="16" fill="#5a2a10"/><rect x="336" y="272" width="16" height="16" fill="#5a2a10"/><rect x="160" y="288" width="16" height="16" fill="#a35a32"/><rect x="176" y="288" width="16" height="16" fill="#a35a32"/><rect x="192" y="288" width="16" height="16" fill="#a35a32"/><rect x="208" y="288" width="16" height="16" fill="#a35a32"/><rect x="224" y="288" width="16" height="16" fill="#a35a32"/><rect x="240" y="288" width="16" height="16" fill="#a35a32"/><rect x="256" y="288" width="16" height="16" fill="#a35a32"/><rect x="272" y="288" width="16" height="16" fill="#a35a32"/><rect x="288" y="288" width="16" height="16" fill="#a35a32"/><rect x="304" y="288" width="16" height="16" fill="#a35a32"/><rect x="320" y="288" width="16" height="16" fill="#6e3814"/><rect x="336" y="288" width="16" height="16" fill="#6e3814"/><rect x="160" y="304" width="16" height="16" fill="#a35a32"/><rect x="176" y="304" width="16" height="16" fill="#a35a32"/><rect x="192" y="304" width="16" height="16" fill="#a35a32"/><rect x="208" y="304" width="16" height="16" fill="#a35a32"/><rect x="224" y="304" width="16" height="16" fill="#a35a32"/><rect x="240" y="304" width="16" height="16" fill="#a35a32"/><rect x="256" y="304" width="16" height="16" fill="#a35a32"/><rect x="272" y="304" width="16" height="16" fill="#a35a32"/><rect x="288" y="304" width="16" height="16" fill="#a35a32"/><rect x="304" y="304" width="16" height="16" fill="#6e3814"/><rect x="320" y="304" width="16" height="16" fill="#6e3814"/><rect x="336" y="304" width="16" height="16" fill="#a35a32"/><rect x="176" y="320" width="16" height="16" fill="#a35a32"/><rect x="192" y="320" width="16" height="16" fill="#a35a32"/><rect x="208" y="320" width="16" height="16" fill="#a35a32"/><rect x="224" y="320" width="16" height="16" fill="#a35a32"/><rect x="240" y="320" width="16" height="16" fill="#a35a32"/><rect x="256" y="320" width="16" height="16" fill="#a35a32"/><rect x="272" y="320" width="16" height="16" fill="#a35a32"/><rect x="288" y="320" width="16" height="16" fill="#a35a32"/><rect x="304" y="320" width="16" height="16" fill="#a35a32"/><rect x="320" y="320" width="16" height="16" fill="#6e3814"/><rect x="192" y="336" width="16" height="16" fill="#a35a32"/><rect x="208" y="336" width="16" height="16" fill="#a35a32"/><rect x="288" y="336" width="16" height="16" fill="#a35a32"/><rect x="304" y="336" width="16" height="16" fill="#6e3814"/><rect x="192" y="352" width="16" height="16" fill="#3e1c08"/><rect x="208" y="352" width="16" height="16" fill="#3e1c08"/><rect x="288" y="352" width="16" height="16" fill="#3e1c08"/><rect x="304" y="352" width="16" height="16" fill="#3e1c08"/></svg>
|
package/public/home-3d-loader.js
CHANGED
|
@@ -90,6 +90,12 @@
|
|
|
90
90
|
elevationDeg: 24, // soft top-down lean (default 30 was steep, 18 too flat)
|
|
91
91
|
lookAtY: 0.75, // target slightly above the table top so seated heads centre
|
|
92
92
|
},
|
|
93
|
+
// Suppress the built-in loading veil · the marketing hero
|
|
94
|
+
// already shows a static poster (`home-3d-poster.*`) which
|
|
95
|
+
// covers the mount → first-frame gap. Layering the veil on
|
|
96
|
+
// top of the poster would just darken it before the canvas
|
|
97
|
+
// takes over.
|
|
98
|
+
loading: false,
|
|
93
99
|
})) return;
|
|
94
100
|
|
|
95
101
|
// Pull the cast + start the rotating-speaker driver. The mock
|
package/public/home.html
CHANGED
|
@@ -1622,7 +1622,7 @@
|
|
|
1622
1622
|
|
|
1623
1623
|
<div class="hero-actions">
|
|
1624
1624
|
<a href="#install" class="big-btn primary">[ ◆ Convene a Room ]</a>
|
|
1625
|
-
<a href="https://github.com/kaysaith1900/privateboard/releases/download/v0.1.
|
|
1625
|
+
<a href="https://github.com/kaysaith1900/privateboard/releases/download/v0.1.36/PrivateBoard-0.1.36-arm64.dmg"
|
|
1626
1626
|
class="big-btn secondary"
|
|
1627
1627
|
download
|
|
1628
1628
|
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>
|
package/public/i18n.js
CHANGED
|
@@ -24,6 +24,13 @@
|
|
|
24
24
|
locale_es: "Español",
|
|
25
25
|
aria_language: "Language",
|
|
26
26
|
|
|
27
|
+
// Search overlay · floating command-palette palette over the
|
|
28
|
+
// current view (sidebar Search nav, Cmd+K).
|
|
29
|
+
search_overlay_placeholder: "Search rooms and messages",
|
|
30
|
+
search_overlay_empty_title: "Search across rooms and messages",
|
|
31
|
+
search_overlay_empty_hint: "Type to filter live · click a result to jump",
|
|
32
|
+
search_overlay_close: "Close",
|
|
33
|
+
|
|
27
34
|
brand_privateboard: "PRIVATEBOARD",
|
|
28
35
|
brand_control: "CONTROL",
|
|
29
36
|
classification: "PRIVATE ACCESS",
|
|
@@ -384,6 +391,24 @@
|
|
|
384
391
|
ap_voice_modify_intensity: "intensity trim",
|
|
385
392
|
ap_voice_modify_timbre: "timbre trim",
|
|
386
393
|
ap_voice_preview_btn_title: "Preview sample",
|
|
394
|
+
/* Sample line spoken by the preview button on the Voice Setup
|
|
395
|
+
panel. Localised per active UI locale so an English-locale
|
|
396
|
+
user doesn't get a Chinese sample read back to them. Kept
|
|
397
|
+
short (under 200 chars · server caps anyway) and self-
|
|
398
|
+
describing so the voice's character lands quickly. */
|
|
399
|
+
ap_voice_preview_sample: "Hello, I'm a member of your boardroom. Looking forward to working with you.",
|
|
400
|
+
/* Voice catalogue fetch errors surfaced inside the picker · the
|
|
401
|
+
backend returns a structured `error` field with a `code` and
|
|
402
|
+
optional `fixUrl`; these keys form the human-readable banner. */
|
|
403
|
+
ap_voice_err_missing_permissions_title: "API key missing voices_read permission",
|
|
404
|
+
ap_voice_err_missing_permissions_body: "Regenerate the key with the voices_read scope enabled, then re-add it in Voice Setup.",
|
|
405
|
+
ap_voice_err_auth_failed_title: "ElevenLabs rejected the API key",
|
|
406
|
+
ap_voice_err_auth_failed_body: "Open the API key settings to verify the key is active.",
|
|
407
|
+
ap_voice_err_rate_limited_title: "ElevenLabs rate limit hit",
|
|
408
|
+
ap_voice_err_rate_limited_body: "Wait a minute and try again.",
|
|
409
|
+
ap_voice_err_fetch_failed_title: "Couldn't load voices",
|
|
410
|
+
ap_voice_err_fetch_failed_body: "Check your network or try again later.",
|
|
411
|
+
ap_voice_err_fix_cta: "Open API key settings →",
|
|
387
412
|
ap_voice_no_provider: "No voice provider configured.",
|
|
388
413
|
ap_voice_loading: "loading voices…",
|
|
389
414
|
ap_voice_fallback_voice: "voice",
|
|
@@ -528,6 +553,16 @@
|
|
|
528
553
|
reload_soft_deck: "Let {name} complete this turn, then refresh the page automatically.",
|
|
529
554
|
reload_cancel_mark: "↩ Cancel",
|
|
530
555
|
reload_cancel_deck: "Stay on the page · keep the discussion running.",
|
|
556
|
+
// Cast-edit popover · room head "Add director" button + overlay.
|
|
557
|
+
head_add_cast_tip: "Add or remove directors",
|
|
558
|
+
head_add_cast_label: "Edit cast",
|
|
559
|
+
cast_edit_title: "Select directors",
|
|
560
|
+
cast_edit_hint: "Check to add · uncheck to remove",
|
|
561
|
+
cast_edit_empty: "No directors available · create one in Agents.",
|
|
562
|
+
cast_edit_cancel: "Cancel",
|
|
563
|
+
cast_edit_confirm: "Confirm",
|
|
564
|
+
cast_edit_min_floor: "Keep at least one director.",
|
|
565
|
+
cast_edit_saving: "Saving…",
|
|
531
566
|
// Meeting recording · head button + REC pill + exit modal.
|
|
532
567
|
head_record_tip: "Record meeting",
|
|
533
568
|
head_record_label: "Record meeting",
|
|
@@ -1164,6 +1199,8 @@ When the room ___, raise an objection.`,
|
|
|
1164
1199
|
us_active_llm_save_btn: "Save & activate",
|
|
1165
1200
|
us_active_llm_save_failed: "Could not save the credential — check the key and try again.",
|
|
1166
1201
|
us_active_llm_delete_active_confirm: "Removing the active provider — the boardroom will fall back to another added provider, or stop working until you add a new one. Continue?",
|
|
1202
|
+
us_llm_delete_confirm: "Remove this LLM credential? This can't be undone.",
|
|
1203
|
+
us_provider_key_delete_confirm: "Remove this {label} API key? This can't be undone.",
|
|
1167
1204
|
us_active_llm_switch_confirm: "Switch active LLM provider to {label}? Every director will be reassigned to the new provider's models.",
|
|
1168
1205
|
voice_cred_section_title: "▸ Voice provider",
|
|
1169
1206
|
voice_cred_section_deck: "Powers spoken meetings · directors pull voices from the active provider's catalog only.",
|
|
@@ -1175,6 +1212,7 @@ When the room ___, raise an objection.`,
|
|
|
1175
1212
|
voice_cred_picker_title: "Choose a voice provider",
|
|
1176
1213
|
voice_cred_switch_confirm: "Switch active voice provider to {label}? Each director's voice will be reshuffled from the new provider's catalog.",
|
|
1177
1214
|
voice_cred_delete_confirm_active: "Remove the active voice credential? Director voices reshuffle from the next available credential.",
|
|
1215
|
+
voice_cred_delete_confirm: "Remove this voice credential? This can't be undone.",
|
|
1178
1216
|
voice_cred_save_failed: "Could not save the voice credential — check the key and try again.",
|
|
1179
1217
|
ap_voice_empty_no_active: "No active voice provider · open Settings to add one",
|
|
1180
1218
|
search_cred_section_title: "▸ Search provider",
|
|
@@ -1187,6 +1225,7 @@ When the room ___, raise an objection.`,
|
|
|
1187
1225
|
search_cred_picker_title: "Choose a search provider",
|
|
1188
1226
|
search_cred_switch_confirm: "Switch active search provider to {label}? Web Search routes through this credential from now on.",
|
|
1189
1227
|
search_cred_delete_confirm_active: "Remove the active search credential? Web Search rotates to the next available credential, or stops working until you add one.",
|
|
1228
|
+
search_cred_delete_confirm: "Remove this search credential? This can't be undone.",
|
|
1190
1229
|
search_cred_save_failed: "Could not save the search credential — check the key and try again.",
|
|
1191
1230
|
us_ws_backend_tag: "WEB SEARCH BACKEND",
|
|
1192
1231
|
us_ws_backend_deck:
|
|
@@ -1268,6 +1307,11 @@ When the room ___, raise an objection.`,
|
|
|
1268
1307
|
locale_es: "Español",
|
|
1269
1308
|
aria_language: "语言",
|
|
1270
1309
|
|
|
1310
|
+
search_overlay_placeholder: "搜索房间和消息",
|
|
1311
|
+
search_overlay_empty_title: "跨房间搜索消息",
|
|
1312
|
+
search_overlay_empty_hint: "输入关键词实时过滤 · 点击结果直接跳转",
|
|
1313
|
+
search_overlay_close: "关闭",
|
|
1314
|
+
|
|
1271
1315
|
brand_privateboard: "PRIVATEBOARD",
|
|
1272
1316
|
brand_control: "控制台",
|
|
1273
1317
|
classification: "私有访问",
|
|
@@ -1608,6 +1652,16 @@ When the room ___, raise an objection.`,
|
|
|
1608
1652
|
ap_voice_modify_intensity: "力度",
|
|
1609
1653
|
ap_voice_modify_timbre: "音色",
|
|
1610
1654
|
ap_voice_preview_btn_title: "试听",
|
|
1655
|
+
ap_voice_preview_sample: "你好,我是你的董事会成员,很高兴为你服务。",
|
|
1656
|
+
ap_voice_err_missing_permissions_title: "API key 缺少 voices_read 权限",
|
|
1657
|
+
ap_voice_err_missing_permissions_body: "重新生成 API key 时勾选 voices_read scope,然后在 Voice Setup 重新粘贴。",
|
|
1658
|
+
ap_voice_err_auth_failed_title: "ElevenLabs 拒绝了这个 API key",
|
|
1659
|
+
ap_voice_err_auth_failed_body: "去 API key 设置页确认这把 key 还有效。",
|
|
1660
|
+
ap_voice_err_rate_limited_title: "ElevenLabs 触发限流",
|
|
1661
|
+
ap_voice_err_rate_limited_body: "等一分钟再试。",
|
|
1662
|
+
ap_voice_err_fetch_failed_title: "音色加载失败",
|
|
1663
|
+
ap_voice_err_fetch_failed_body: "检查网络后再试。",
|
|
1664
|
+
ap_voice_err_fix_cta: "打开 API key 设置 →",
|
|
1611
1665
|
ap_voice_no_provider: "尚未配置可用的语音提供商。",
|
|
1612
1666
|
ap_voice_loading: "加载音色中…",
|
|
1613
1667
|
ap_voice_fallback_voice: "语音",
|
|
@@ -1749,6 +1803,16 @@ When the room ___, raise an objection.`,
|
|
|
1749
1803
|
reload_soft_deck: "让 {name} 说完这轮,然后自动刷新页面。",
|
|
1750
1804
|
reload_cancel_mark: "↩ 取消",
|
|
1751
1805
|
reload_cancel_deck: "留在页面,讨论继续。",
|
|
1806
|
+
// 阵容编辑 · 房间头部"添加董事"按钮 + 弹窗
|
|
1807
|
+
head_add_cast_tip: "添加或移除董事",
|
|
1808
|
+
head_add_cast_label: "编辑阵容",
|
|
1809
|
+
cast_edit_title: "选择董事",
|
|
1810
|
+
cast_edit_hint: "勾选添加 · 取消勾选移除",
|
|
1811
|
+
cast_edit_empty: "暂无可选董事 · 请先在 Agents 中创建。",
|
|
1812
|
+
cast_edit_cancel: "取消",
|
|
1813
|
+
cast_edit_confirm: "确认",
|
|
1814
|
+
cast_edit_min_floor: "请至少保留一位董事。",
|
|
1815
|
+
cast_edit_saving: "保存中…",
|
|
1752
1816
|
// 会议录制 · header 按钮 + REC 提示牌 + 退出弹窗
|
|
1753
1817
|
head_record_tip: "录制会议",
|
|
1754
1818
|
head_record_label: "录制会议",
|
|
@@ -2364,6 +2428,8 @@ When the room ___, raise an objection.`,
|
|
|
2364
2428
|
us_active_llm_save_btn: "保存并启用",
|
|
2365
2429
|
us_active_llm_save_failed: "保存失败 —— 请检查 key 后重试。",
|
|
2366
2430
|
us_active_llm_delete_active_confirm: "正在删除当前使用的服务商 —— 删除后将自动切换到下一个已添加的服务商;如果没有其他服务商,系统将无法正常使用。确定继续吗?",
|
|
2431
|
+
us_llm_delete_confirm: "确认删除这条 LLM 凭证?删除后无法恢复。",
|
|
2432
|
+
us_provider_key_delete_confirm: "确认删除 {label} 的 API key?删除后无法恢复。",
|
|
2367
2433
|
us_active_llm_switch_confirm: "切换当前服务商为 {label}?所有 director 会被重新分配到新服务商的模型。",
|
|
2368
2434
|
voice_cred_section_title: "▸ 语音模型",
|
|
2369
2435
|
voice_cred_section_deck: "支撑语音会议 · 所有 director 只从当前生效的语音模型里抽声音。",
|
|
@@ -2375,6 +2441,7 @@ When the room ___, raise an objection.`,
|
|
|
2375
2441
|
voice_cred_picker_title: "选择一个语音模型",
|
|
2376
2442
|
voice_cred_switch_confirm: "切换到 {label}?每位 director 的声音会从新模型的清单里重新分配。",
|
|
2377
2443
|
voice_cred_delete_confirm_active: "删除正在使用的语音凭证?Director 的声音会从下一个可用凭证里重新分配。",
|
|
2444
|
+
voice_cred_delete_confirm: "确认删除这条语音凭证?删除后无法恢复。",
|
|
2378
2445
|
voice_cred_save_failed: "保存语音凭证失败 — 请检查 key 后重试。",
|
|
2379
2446
|
ap_voice_empty_no_active: "还没启用语音模型 · 去 Settings 添加一个",
|
|
2380
2447
|
search_cred_section_title: "▸ 搜索服务",
|
|
@@ -2387,6 +2454,7 @@ When the room ___, raise an objection.`,
|
|
|
2387
2454
|
search_cred_picker_title: "选择一个搜索服务",
|
|
2388
2455
|
search_cred_switch_confirm: "切换到 {label}?之后 Web Search 都会走这把凭证。",
|
|
2389
2456
|
search_cred_delete_confirm_active: "删除正在使用的搜索凭证?Web Search 会切换到下一个可用凭证;如果都没了就停止工作,直到你重新添加。",
|
|
2457
|
+
search_cred_delete_confirm: "确认删除这条搜索凭证?删除后无法恢复。",
|
|
2390
2458
|
search_cred_save_failed: "保存搜索凭证失败 — 请检查 key 后重试。",
|
|
2391
2459
|
us_keys_group_skill: "技能服务",
|
|
2392
2460
|
us_keys_skill_deck: "为需要外部服务的系统技能授权。每位董事可在档案中单独开关。",
|
|
@@ -2438,6 +2506,11 @@ When the room ___, raise an objection.`,
|
|
|
2438
2506
|
locale_es: "Español",
|
|
2439
2507
|
aria_language: "言語",
|
|
2440
2508
|
|
|
2509
|
+
search_overlay_placeholder: "ルームとメッセージを検索",
|
|
2510
|
+
search_overlay_empty_title: "ルームを横断して検索",
|
|
2511
|
+
search_overlay_empty_hint: "入力すると即時フィルタ · 結果をクリックで移動",
|
|
2512
|
+
search_overlay_close: "閉じる",
|
|
2513
|
+
|
|
2441
2514
|
brand_privateboard: "PRIVATEBOARD",
|
|
2442
2515
|
brand_control: "コントロール",
|
|
2443
2516
|
classification: "プライベートアクセス",
|
|
@@ -2756,6 +2829,16 @@ When the room ___, raise an objection.`,
|
|
|
2756
2829
|
ap_voice_modify_intensity: "強度調整",
|
|
2757
2830
|
ap_voice_modify_timbre: "音色調整",
|
|
2758
2831
|
ap_voice_preview_btn_title: "サンプル再生",
|
|
2832
|
+
ap_voice_preview_sample: "こんにちは。あなたのボードのメンバーです。どうぞよろしくお願いします。",
|
|
2833
|
+
ap_voice_err_missing_permissions_title: "API キーに voices_read 権限がありません",
|
|
2834
|
+
ap_voice_err_missing_permissions_body: "voices_read スコープを有効にして API キーを作り直し、Voice Setup に貼り直してください。",
|
|
2835
|
+
ap_voice_err_auth_failed_title: "ElevenLabs に API キーが拒否されました",
|
|
2836
|
+
ap_voice_err_auth_failed_body: "API キー設定で有効性を確認してください。",
|
|
2837
|
+
ap_voice_err_rate_limited_title: "ElevenLabs のレート制限に達しました",
|
|
2838
|
+
ap_voice_err_rate_limited_body: "少し待ってから再試行してください。",
|
|
2839
|
+
ap_voice_err_fetch_failed_title: "音声の読み込みに失敗",
|
|
2840
|
+
ap_voice_err_fetch_failed_body: "ネットワークを確認してから再試行してください。",
|
|
2841
|
+
ap_voice_err_fix_cta: "API キー設定を開く →",
|
|
2759
2842
|
ap_voice_no_provider: "音声プロバイダが未設定です。",
|
|
2760
2843
|
ap_voice_loading: "音声を読み込み中…",
|
|
2761
2844
|
ap_voice_fallback_voice: "音声",
|
|
@@ -2896,6 +2979,16 @@ When the room ___, raise an objection.`,
|
|
|
2896
2979
|
reload_soft_deck: "{name} にこのターンを終えさせてから自動で再読込。",
|
|
2897
2980
|
reload_cancel_mark: "↩ キャンセル",
|
|
2898
2981
|
reload_cancel_deck: "ページに留まる · 議論を続行。",
|
|
2982
|
+
// キャスト編集 · ルームヘッダーの「ディレクター追加」ボタン + オーバーレイ
|
|
2983
|
+
head_add_cast_tip: "ディレクターを追加または削除",
|
|
2984
|
+
head_add_cast_label: "キャストを編集",
|
|
2985
|
+
cast_edit_title: "ディレクターを選択",
|
|
2986
|
+
cast_edit_hint: "チェックで追加 · 外すと削除",
|
|
2987
|
+
cast_edit_empty: "選択可能なディレクターがいません · Agents で作成してください。",
|
|
2988
|
+
cast_edit_cancel: "キャンセル",
|
|
2989
|
+
cast_edit_confirm: "確認",
|
|
2990
|
+
cast_edit_min_floor: "少なくとも 1 人のディレクターを残してください。",
|
|
2991
|
+
cast_edit_saving: "保存中…",
|
|
2899
2992
|
// ミーティング録画 · ヘッダーボタン + REC バッジ + 退出ダイアログ
|
|
2900
2993
|
head_record_tip: "ミーティングを録画",
|
|
2901
2994
|
head_record_label: "ミーティングを録画",
|
|
@@ -3306,6 +3399,8 @@ When the room ___, raise an objection.`,
|
|
|
3306
3399
|
us_active_llm_save_btn: "保存して有効化",
|
|
3307
3400
|
us_active_llm_save_failed: "保存に失敗しました —— キーを確認して再試行してください。",
|
|
3308
3401
|
us_active_llm_delete_active_confirm: "現在使用中のプロバイダーを削除します —— 削除後は別の追加済みプロバイダーに切り替わります。他になければシステムは動作しません。続行しますか?",
|
|
3402
|
+
us_llm_delete_confirm: "このLLMクレデンシャルを削除しますか?元には戻せません。",
|
|
3403
|
+
us_provider_key_delete_confirm: "{label} のAPIキーを削除しますか?元には戻せません。",
|
|
3309
3404
|
us_active_llm_switch_confirm: "現在のプロバイダーを {label} に切り替えますか?全 director が新しいプロバイダーのモデルに再割り当てされます。",
|
|
3310
3405
|
us_keys_skill_deck: "外部サービスを必要とするシステムスキルを有効化。各エージェントはプロフィール単位で参加可否を選べます。",
|
|
3311
3406
|
us_ws_backend_tag: "ウェブ検索バックエンド",
|
|
@@ -3352,6 +3447,11 @@ When the room ___, raise an objection.`,
|
|
|
3352
3447
|
locale_es: "Español",
|
|
3353
3448
|
aria_language: "Idioma",
|
|
3354
3449
|
|
|
3450
|
+
search_overlay_placeholder: "Buscar salas y mensajes",
|
|
3451
|
+
search_overlay_empty_title: "Buscar entre salas y mensajes",
|
|
3452
|
+
search_overlay_empty_hint: "Escribe para filtrar al instante · clic para saltar",
|
|
3453
|
+
search_overlay_close: "Cerrar",
|
|
3454
|
+
|
|
3355
3455
|
brand_privateboard: "PRIVATEBOARD",
|
|
3356
3456
|
brand_control: "CONTROL",
|
|
3357
3457
|
classification: "ACCESO PRIVADO",
|
|
@@ -3664,6 +3764,16 @@ When the room ___, raise an objection.`,
|
|
|
3664
3764
|
ap_voice_modify_intensity: "ajuste de intensidad",
|
|
3665
3765
|
ap_voice_modify_timbre: "ajuste de timbre",
|
|
3666
3766
|
ap_voice_preview_btn_title: "Vista previa",
|
|
3767
|
+
ap_voice_preview_sample: "Hola, soy miembro de tu consejo. Será un placer trabajar contigo.",
|
|
3768
|
+
ap_voice_err_missing_permissions_title: "La API key no tiene permiso voices_read",
|
|
3769
|
+
ap_voice_err_missing_permissions_body: "Regenera la API key con el scope voices_read activado y vuelve a pegarla en Voice Setup.",
|
|
3770
|
+
ap_voice_err_auth_failed_title: "ElevenLabs rechazó la API key",
|
|
3771
|
+
ap_voice_err_auth_failed_body: "Abre la configuración de API keys para verificar la clave.",
|
|
3772
|
+
ap_voice_err_rate_limited_title: "Límite de tasa de ElevenLabs alcanzado",
|
|
3773
|
+
ap_voice_err_rate_limited_body: "Espera un minuto e inténtalo de nuevo.",
|
|
3774
|
+
ap_voice_err_fetch_failed_title: "No se pudieron cargar las voces",
|
|
3775
|
+
ap_voice_err_fetch_failed_body: "Comprueba la red e inténtalo de nuevo.",
|
|
3776
|
+
ap_voice_err_fix_cta: "Abrir configuración de API keys →",
|
|
3667
3777
|
ap_voice_no_provider: "No hay proveedor de voz configurado.",
|
|
3668
3778
|
ap_voice_loading: "cargando voces…",
|
|
3669
3779
|
ap_voice_fallback_voice: "voz",
|
|
@@ -3803,6 +3913,16 @@ When the room ___, raise an objection.`,
|
|
|
3803
3913
|
reload_soft_deck: "Deja que {name} complete este turno, luego recarga la página automáticamente.",
|
|
3804
3914
|
reload_cancel_mark: "↩ Cancelar",
|
|
3805
3915
|
reload_cancel_deck: "Mantente en la página · la discusión continúa.",
|
|
3916
|
+
// Edición del elenco · botón "Añadir director" en la cabecera + popover
|
|
3917
|
+
head_add_cast_tip: "Añadir o quitar directores",
|
|
3918
|
+
head_add_cast_label: "Editar elenco",
|
|
3919
|
+
cast_edit_title: "Selecciona directores",
|
|
3920
|
+
cast_edit_hint: "Marca para añadir · desmarca para quitar",
|
|
3921
|
+
cast_edit_empty: "No hay directores disponibles · crea uno en Agents.",
|
|
3922
|
+
cast_edit_cancel: "Cancelar",
|
|
3923
|
+
cast_edit_confirm: "Confirmar",
|
|
3924
|
+
cast_edit_min_floor: "Mantén al menos un director.",
|
|
3925
|
+
cast_edit_saving: "Guardando…",
|
|
3806
3926
|
// Grabación de reunión · botón en cabecera + chip REC + modal de salida
|
|
3807
3927
|
head_record_tip: "Grabar reunión",
|
|
3808
3928
|
head_record_label: "Grabar reunión",
|
|
@@ -4214,6 +4334,8 @@ When the room ___, raise an objection.`,
|
|
|
4214
4334
|
us_active_llm_save_btn: "Guardar y activar",
|
|
4215
4335
|
us_active_llm_save_failed: "No se pudo guardar la credencial — revisa la clave y vuelve a intentarlo.",
|
|
4216
4336
|
us_active_llm_delete_active_confirm: "Eliminando el proveedor activo — la sala usará otro proveedor añadido, o dejará de funcionar hasta que añadas uno nuevo. ¿Continuar?",
|
|
4337
|
+
us_llm_delete_confirm: "¿Eliminar esta credencial LLM? No se puede deshacer.",
|
|
4338
|
+
us_provider_key_delete_confirm: "¿Eliminar la clave API de {label}? No se puede deshacer.",
|
|
4217
4339
|
us_active_llm_switch_confirm: "¿Cambiar el proveedor LLM activo a {label}? Todos los directores se reasignarán a los modelos del nuevo proveedor.",
|
|
4218
4340
|
us_keys_skill_deck: "habilita habilidades de sistema que necesitan un servicio externo. Cada agente puede optar in/out en su perfil.",
|
|
4219
4341
|
us_ws_backend_tag: "MOTOR DE BÚSQUEDA WEB",
|
|
Binary file
|