privateboard 0.1.37 → 0.1.40
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 +1415 -91
- package/dist/boot.js.map +1 -1
- package/dist/cli.js +1415 -91
- package/dist/cli.js.map +1 -1
- package/dist/server.js +1271 -81
- 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/adjourn-overlay.css +2 -2
- package/public/agent-overlay.css +27 -15
- package/public/agent-overlay.js +3 -1
- package/public/agent-profile.css +331 -41
- package/public/agent-profile.js +499 -75
- package/public/app-updater.css +1 -1
- package/public/app.js +2090 -547
- package/public/avatar-3d-snap.js +205 -0
- package/public/avatar-3d.js +792 -0
- package/public/avatar-customizer.html +274 -0
- package/public/avatar3d-editor.css +240 -0
- package/public/avatar3d-editor.js +481 -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 +18 -7
- package/public/home.html +80 -18
- package/public/i18n.js +279 -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/office.glb +0 -0
- package/public/icons/stuff.glb +0 -0
- package/public/index.html +203 -182
- package/public/mention-picker.js +1 -1
- package/public/new-agent.css +7 -7
- package/public/new-agent.js +46 -20
- package/public/office-viewer.html +340 -0
- package/public/onboarding.css +5 -5
- package/public/quote-cta.css +5 -4
- package/public/quote-cta.js +50 -5
- package/public/room-settings.css +24 -9
- package/public/stuff-viewer.html +330 -0
- package/public/thread.css +1211 -0
- package/public/user-settings.css +16 -19
- package/public/user-settings.js +86 -78
- 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 +12 -0
- package/public/voice-3d.js +1407 -432
- package/public/voice-clone.css +875 -0
- package/public/voice-clone.js +1351 -0
- package/public/voice-replay.css +3 -3
- package/public/voice-replay.js +21 -0
- package/public/avatar-skill.js +0 -629
- package/public/icons/folded-sidebar.png +0 -0
package/public/i18n.js
CHANGED
|
@@ -386,6 +386,74 @@
|
|
|
386
386
|
ap_voice_locked_title: "Configure a voice provider to let this director speak with their own register.",
|
|
387
387
|
ap_voice_locked_body: "Configure a voice provider to unlock TTS — your director will be able to speak in their own register, with adjustable pitch, speed and emotion.",
|
|
388
388
|
ap_voice_locked_cta: "Unlock voice",
|
|
389
|
+
// ── Voice cloning ───────────────────────────────────────────
|
|
390
|
+
voice_clone_btn: "FORGE VOICE",
|
|
391
|
+
voice_clone_btn_kicker: "// VOICE · CLONE-FORGE",
|
|
392
|
+
voice_clone_btn_hint: "Train a new voice for this director from an audio or video sample.",
|
|
393
|
+
voice_clone_kicker: "// CLONE",
|
|
394
|
+
voice_clone_classification_left: "// VOICE CLONE · CLASSIFIED",
|
|
395
|
+
voice_clone_classification_right: "private board",
|
|
396
|
+
voice_clone_head_meta: "// CLONE · ACTIVE",
|
|
397
|
+
voice_clone_modal_title: "Clone voice · {name}",
|
|
398
|
+
voice_clone_source_label: "Voice source",
|
|
399
|
+
voice_clone_trim_decoding: "Decoding audio…",
|
|
400
|
+
voice_clone_trim_unsupported: "Can't preview this format; the file will be uploaded as-is.",
|
|
401
|
+
voice_clone_trim_video_unsupported: "Couldn't extract audio from this video. Re-export it as mp4/mov (AAC) or convert to a plain audio file (mp3 / m4a / wav) and try again.",
|
|
402
|
+
voice_clone_trim_selected: "· {sel} of {total}",
|
|
403
|
+
voice_clone_trimming: "Trimming selection…",
|
|
404
|
+
voice_clone_file_pick: "Choose an audio or video file",
|
|
405
|
+
voice_clone_file_hint: "Audio: mp3 / m4a / wav · Video: mp4 / mov / webm — we'll pull the audio track in your browser.",
|
|
406
|
+
voice_clone_mode_upload: "Upload file",
|
|
407
|
+
voice_clone_mode_record: "Record voice",
|
|
408
|
+
voice_clone_record_script: "Read this aloud — it covers a wide phoneme range so the clone captures your timbre well:",
|
|
409
|
+
voice_clone_record_script_text: "The quick brown fox jumps over the lazy dog. She sells seashells by the seashore. How vexingly quick daft zebras jump! Sphinx of black quartz, judge my vow.",
|
|
410
|
+
voice_clone_record_start: "Start recording",
|
|
411
|
+
voice_clone_record_idle: "Tap to record",
|
|
412
|
+
voice_clone_record_recording: "Recording… tap to stop",
|
|
413
|
+
voice_clone_record_ready: "Recording ready. Confirm to clone.",
|
|
414
|
+
voice_clone_record_empty: "No audio captured. Try again.",
|
|
415
|
+
voice_clone_record_play: "Play back",
|
|
416
|
+
voice_clone_record_redo: "Re-record",
|
|
417
|
+
voice_clone_record_mic_err: "Microphone access denied: {msg}",
|
|
418
|
+
voice_clone_record_init_err: "Recorder init failed: {msg}",
|
|
419
|
+
voice_clone_label_label: "Label · required",
|
|
420
|
+
voice_clone_label_placeholder: "Name this cloned voice (e.g. Chloe)",
|
|
421
|
+
voice_clone_minimax_group_label: "MiniMax Group ID",
|
|
422
|
+
voice_clone_minimax_group_placeholder: "e.g. 1838xxxxxx · required if your key isn't a JWT",
|
|
423
|
+
voice_clone_hint: "Use a clean 10s–3min sample of the target voice. <strong>Only one clone runs at a time.</strong>",
|
|
424
|
+
voice_clone_confirm: "Start cloning",
|
|
425
|
+
voice_clone_dismiss: "Cancel",
|
|
426
|
+
voice_clone_cancel: "Cancel clone",
|
|
427
|
+
voice_clone_minimize: "Minimize",
|
|
428
|
+
voice_clone_minimize_btn: "Run in background",
|
|
429
|
+
voice_clone_close: "Close",
|
|
430
|
+
voice_clone_stage_fetch: "Fetch audio",
|
|
431
|
+
voice_clone_stage_upload: "Upload to provider",
|
|
432
|
+
voice_clone_stage_train: "Wait for clone",
|
|
433
|
+
voice_clone_uploading_file: "Uploading file…",
|
|
434
|
+
voice_clone_success: "Voice cloned and applied to the director.",
|
|
435
|
+
voice_clone_failed: "Clone failed.",
|
|
436
|
+
voice_clone_retry: "Retry",
|
|
437
|
+
voice_clone_done_btn: "Done",
|
|
438
|
+
voice_clone_apply_close_btn: "Apply and close",
|
|
439
|
+
voice_clone_success_kicker: "// CLONED",
|
|
440
|
+
voice_clone_success_title: "Cloned · {name}",
|
|
441
|
+
voice_clone_preview_default_name: "this voice",
|
|
442
|
+
voice_clone_preview_default_text: "I'm {name}, a member of your private boardroom. Looking forward to working with you.",
|
|
443
|
+
voice_clone_preview_sample_placeholder: "Sample line for preview",
|
|
444
|
+
voice_clone_preview_btn_aria: "Preview cloned voice",
|
|
445
|
+
voice_clone_preview_hint: "Edit the line above, then tap the play button to hear the cloned voice.",
|
|
446
|
+
voice_clone_preview_err: "Preview failed: {msg}",
|
|
447
|
+
voice_clone_preview_audio_err: "Browser couldn't decode the audio. Try a different sample line.",
|
|
448
|
+
voice_clone_preview_missing_voice: "No voice_id captured — re-open the clone modal.",
|
|
449
|
+
voice_clone_pill_label_short: "Cloning",
|
|
450
|
+
voice_clone_pill_done: "Cloned",
|
|
451
|
+
voice_clone_pill_failed: "Clone failed",
|
|
452
|
+
voice_clone_pill_aria: "Open voice cloning panel",
|
|
453
|
+
voice_clone_err_provider_auth: "The provider rejected the API key. Re-check it in voice settings.",
|
|
454
|
+
voice_clone_err_provider_quota: "Provider balance or subscription doesn't allow cloning.",
|
|
455
|
+
voice_clone_err_audio_too_short: "Audio sample is too short to clone from.",
|
|
456
|
+
voice_clone_err_audio_too_long: "Audio sample is too long.",
|
|
389
457
|
ap_voice_locked_providers: "supports <b>MiniMax</b> · <b>ElevenLabs</b>",
|
|
390
458
|
ap_voice_modify_pitch: "pitch trim",
|
|
391
459
|
ap_voice_modify_intensity: "intensity trim",
|
|
@@ -397,6 +465,15 @@
|
|
|
397
465
|
short (under 200 chars · server caps anyway) and self-
|
|
398
466
|
describing so the voice's character lands quickly. */
|
|
399
467
|
ap_voice_preview_sample: "Hello, I'm a member of your boardroom. Looking forward to working with you.",
|
|
468
|
+
ap_voice_preview_text_label: "Preview line",
|
|
469
|
+
ap_voice_section_voice: "Voice",
|
|
470
|
+
ap_voice_section_emotion: "Emotion",
|
|
471
|
+
ap_voice_section_preview: "Preview line",
|
|
472
|
+
ap_voice_group_cloned_provider: "// cloned · {provider}",
|
|
473
|
+
ap_voice_rename_btn: "Rename voice",
|
|
474
|
+
ap_voice_rename_prompt: "Display name for voice {id}",
|
|
475
|
+
ap_voice_rename_clear_confirm: "Clear the custom name and fall back to the provider's label?",
|
|
476
|
+
ap_voice_rename_err: "Rename failed: {msg}",
|
|
400
477
|
/* Voice catalogue fetch errors surfaced inside the picker · the
|
|
401
478
|
backend returns a structured `error` field with a `code` and
|
|
402
479
|
optional `fixUrl`; these keys form the human-readable banner. */
|
|
@@ -462,6 +539,35 @@
|
|
|
462
539
|
|
|
463
540
|
convene_show_more: "Show more ↓",
|
|
464
541
|
convene_show_less: "Show less ↑",
|
|
542
|
+
// Thread feature · private 1:1 director aside (Slack-DM-style float)
|
|
543
|
+
thread_trigger: "// thread",
|
|
544
|
+
thread_trigger_short: "Reply privately",
|
|
545
|
+
thread_trigger_label: "Thread",
|
|
546
|
+
thread_trigger_tip: "Pull {name} aside privately",
|
|
547
|
+
thread_head_kicker: "private with you",
|
|
548
|
+
thread_minimize: "—",
|
|
549
|
+
thread_minimize_tip: "Minimize",
|
|
550
|
+
thread_close: "✕",
|
|
551
|
+
thread_close_tip: "Close",
|
|
552
|
+
thread_empty_title: "Pull them aside",
|
|
553
|
+
thread_empty_deck: "What does {name} know that you want to dig into? They have the full room context up to this point.",
|
|
554
|
+
thread_composer_placeholder: "Ask {name} anything…",
|
|
555
|
+
thread_send: "Send",
|
|
556
|
+
thread_stop: "Stop",
|
|
557
|
+
thread_stop_tip: "Interrupt the director's reply",
|
|
558
|
+
thread_maximize: "⛶",
|
|
559
|
+
thread_maximize_tip: "Maximize to side panel",
|
|
560
|
+
thread_restore: "⊟",
|
|
561
|
+
thread_restore_tip: "Restore as floating window",
|
|
562
|
+
thread_dock_resize_tip: "Drag to resize panel",
|
|
563
|
+
head_threads_tip: "All private threads in this room",
|
|
564
|
+
head_threads_label: "All threads",
|
|
565
|
+
threads_list_title: "// Private threads",
|
|
566
|
+
threads_list_loading: "Loading…",
|
|
567
|
+
threads_list_empty: "No private threads yet · open one from the // Thread button on any director's message.",
|
|
568
|
+
threads_list_active: "open",
|
|
569
|
+
threads_list_delete_tip: "Delete this thread",
|
|
570
|
+
threads_list_delete_confirm: "Delete the private thread with {name}? This can't be undone.",
|
|
465
571
|
convene_eyebrow: "▸ Convene · Initial Question",
|
|
466
572
|
convene_meta_to: "to",
|
|
467
573
|
|
|
@@ -481,6 +587,7 @@
|
|
|
481
587
|
msg_ws_query_label: "query",
|
|
482
588
|
msg_ws_expand_hide: "Collapse",
|
|
483
589
|
msg_ws_secs: "{n}s",
|
|
590
|
+
msg_ws_card_body: "Searched \"{query}\"",
|
|
484
591
|
msg_chair_direct_kicker: "▸ chair · responding to you",
|
|
485
592
|
msg_chair_intervention_kicker: "▸ chair note",
|
|
486
593
|
msg_chair_billing_kicker: "▸ billing · attention needed",
|
|
@@ -568,6 +675,7 @@
|
|
|
568
675
|
head_record_label: "Record meeting",
|
|
569
676
|
head_record_stop_tip: "Stop recording · save .mp4",
|
|
570
677
|
head_record_stop_label: "Stop recording",
|
|
678
|
+
head_replay_stop_label: "Stop",
|
|
571
679
|
rec_pill_label: "REC",
|
|
572
680
|
rec_error_toast: "Couldn't start the meeting recording. Check screen-capture permission and try again.",
|
|
573
681
|
rec_exit_class: "recording · choose",
|
|
@@ -594,6 +702,20 @@
|
|
|
594
702
|
rec_stop_cancel_mark: "↩ Cancel",
|
|
595
703
|
rec_stop_cancel_deck: "Stay here · the recording keeps running.",
|
|
596
704
|
rec_saved_toast: "Recording saved · file downloaded",
|
|
705
|
+
// Pause-after-current save modal · the room reached soft-pause
|
|
706
|
+
// while a recording was still capturing. Ask the user what to
|
|
707
|
+
// do with the in-flight clip before it starts recording silence.
|
|
708
|
+
rec_pause_save_class: "pause-after-current · save?",
|
|
709
|
+
rec_pause_save_right: "// in-flight recording",
|
|
710
|
+
rec_pause_save_tag: "▸ recording",
|
|
711
|
+
rec_pause_save_title: "Save the recording?",
|
|
712
|
+
rec_pause_save_deck: "The current director just finished and the room is paused. Your recording is still rolling — pick how to handle it.",
|
|
713
|
+
rec_pause_save_adjourn_mark: "✓ Save & adjourn room",
|
|
714
|
+
rec_pause_save_adjourn_deck: "Stop the recording, download the file, then end the room.",
|
|
715
|
+
rec_pause_save_keep_mark: "✓ Save & keep paused",
|
|
716
|
+
rec_pause_save_keep_deck: "Stop the recording and download. Room stays paused so you can resume later.",
|
|
717
|
+
rec_pause_save_continue_mark: "↩ Keep recording",
|
|
718
|
+
rec_pause_save_continue_deck: "Stay paused; the recording keeps running (warning: it'll capture silence).",
|
|
597
719
|
// Resume-choice modal · shown when user clicks Resume on a
|
|
598
720
|
// voice room with no voice key configured. Same 3-button
|
|
599
721
|
// shape as the pause / reload modals.
|
|
@@ -1139,7 +1261,8 @@ When the room ___, raise an objection.`,
|
|
|
1139
1261
|
us_user_tag: "▸ User",
|
|
1140
1262
|
us_user_deck: "how the boardroom addresses you and what it knows about your context.",
|
|
1141
1263
|
us_avatar: "Avatar",
|
|
1142
|
-
us_regen_avatar: "
|
|
1264
|
+
us_regen_avatar: "8-bit avatar",
|
|
1265
|
+
us_avatar3d: "3D avatar",
|
|
1143
1266
|
us_name: "Name",
|
|
1144
1267
|
us_about: "About you",
|
|
1145
1268
|
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.",
|
|
@@ -1647,12 +1770,89 @@ When the room ___, raise an objection.`,
|
|
|
1647
1770
|
ap_voice_locked_title: "配置一个语音服务商,董事就能以自己的音色发声。",
|
|
1648
1771
|
ap_voice_locked_body: "配置一个语音服务商即可解锁 TTS — 董事将以自己的音色发声,可调语速、语调与情绪。",
|
|
1649
1772
|
ap_voice_locked_cta: "解锁声音",
|
|
1773
|
+
// ── 音色克隆 ───────────────────────────────────────────
|
|
1774
|
+
voice_clone_btn: "锻造音色",
|
|
1775
|
+
voice_clone_btn_kicker: "// 音色 · 克隆熔炉",
|
|
1776
|
+
voice_clone_btn_hint: "上传音频或视频样本,为这位董事打造专属新音色。",
|
|
1777
|
+
voice_clone_kicker: "// 音色克隆",
|
|
1778
|
+
voice_clone_classification_left: "// 音色克隆 · 机密",
|
|
1779
|
+
voice_clone_classification_right: "私董会",
|
|
1780
|
+
voice_clone_head_meta: "// 克隆 · 进行中",
|
|
1781
|
+
voice_clone_modal_title: "克隆音色 · {name}",
|
|
1782
|
+
voice_clone_source_label: "音色来源",
|
|
1783
|
+
voice_clone_trim_decoding: "正在解码音频…",
|
|
1784
|
+
voice_clone_trim_unsupported: "无法预览这个格式,文件将原样上传。",
|
|
1785
|
+
voice_clone_trim_video_unsupported: "无法从这段视频中提取音频。请改用 mp4/mov(AAC 编码)重新导出,或转成纯音频文件 (mp3 / m4a / wav) 后再试。",
|
|
1786
|
+
voice_clone_trim_selected: "· {sel} / {total}",
|
|
1787
|
+
voice_clone_trimming: "正在裁剪选段…",
|
|
1788
|
+
voice_clone_file_pick: "选择音频或视频文件",
|
|
1789
|
+
voice_clone_file_hint: "音频:mp3 / m4a / wav · 视频:mp4 / mov / webm — 浏览器会在本地从视频里抽取音轨。",
|
|
1790
|
+
voice_clone_mode_upload: "上传文件",
|
|
1791
|
+
voice_clone_mode_record: "录制声音",
|
|
1792
|
+
voice_clone_record_script: "请朗读以下文字 — 它覆盖了较全的音素,能帮助克隆更准确地捕捉你的音色:",
|
|
1793
|
+
voice_clone_record_script_text: "今天天气真好,阳光透过窗户洒在书桌上。请你说说话,让我们听一下你的声音特点。从北京到上海,从清晨到傍晚,每一个故事都值得被认真聆听。",
|
|
1794
|
+
voice_clone_record_start: "开始录制",
|
|
1795
|
+
voice_clone_record_idle: "点击开始录制",
|
|
1796
|
+
voice_clone_record_recording: "录制中… 点击停止",
|
|
1797
|
+
voice_clone_record_ready: "录制完成,可以确认克隆",
|
|
1798
|
+
voice_clone_record_empty: "未捕捉到音频,请重试",
|
|
1799
|
+
voice_clone_record_play: "试听",
|
|
1800
|
+
voice_clone_record_redo: "重录",
|
|
1801
|
+
voice_clone_record_mic_err: "麦克风权限被拒绝: {msg}",
|
|
1802
|
+
voice_clone_record_init_err: "录音初始化失败: {msg}",
|
|
1803
|
+
voice_clone_label_label: "标签 · 必填",
|
|
1804
|
+
voice_clone_label_placeholder: "给这个克隆音色起个名字 (例如 Chloe)",
|
|
1805
|
+
voice_clone_minimax_group_label: "MiniMax Group ID",
|
|
1806
|
+
voice_clone_minimax_group_placeholder: "例如 1838xxxxxx · 当 key 不是 JWT 时必填",
|
|
1807
|
+
voice_clone_hint: "请使用一段干净的 10 秒到 3 分钟目标音色样本。<strong>同一时间只能克隆一个音色。</strong>",
|
|
1808
|
+
voice_clone_confirm: "开始克隆",
|
|
1809
|
+
voice_clone_dismiss: "取消",
|
|
1810
|
+
voice_clone_cancel: "取消克隆",
|
|
1811
|
+
voice_clone_minimize: "最小化",
|
|
1812
|
+
voice_clone_minimize_btn: "在后台继续",
|
|
1813
|
+
voice_clone_close: "关闭",
|
|
1814
|
+
voice_clone_stage_fetch: "抓取音频",
|
|
1815
|
+
voice_clone_stage_upload: "上传到服务商",
|
|
1816
|
+
voice_clone_stage_train: "等待克隆完成",
|
|
1817
|
+
voice_clone_uploading_file: "正在上传文件…",
|
|
1818
|
+
voice_clone_success: "音色已克隆,已应用到该董事。",
|
|
1819
|
+
voice_clone_failed: "克隆失败。",
|
|
1820
|
+
voice_clone_retry: "重试",
|
|
1821
|
+
voice_clone_done_btn: "完成",
|
|
1822
|
+
voice_clone_apply_close_btn: "应用并关闭",
|
|
1823
|
+
voice_clone_success_kicker: "// 克隆完成",
|
|
1824
|
+
voice_clone_success_title: "已克隆 · {name}",
|
|
1825
|
+
voice_clone_preview_default_name: "新音色",
|
|
1826
|
+
voice_clone_preview_default_text: "我是 {name},你的私董会成员,很高兴为你服务。",
|
|
1827
|
+
voice_clone_preview_sample_placeholder: "试听文案",
|
|
1828
|
+
voice_clone_preview_btn_aria: "试听克隆音色",
|
|
1829
|
+
voice_clone_preview_hint: "可以编辑上面的文案,然后点播放按钮听一下克隆出的音色。",
|
|
1830
|
+
voice_clone_preview_err: "试听失败: {msg}",
|
|
1831
|
+
voice_clone_preview_audio_err: "浏览器无法解码音频,请试试不同的文案。",
|
|
1832
|
+
voice_clone_preview_missing_voice: "voice_id 没拿到,请重新打开克隆面板。",
|
|
1833
|
+
voice_clone_pill_label_short: "克隆中",
|
|
1834
|
+
voice_clone_pill_done: "已完成",
|
|
1835
|
+
voice_clone_pill_failed: "克隆失败",
|
|
1836
|
+
voice_clone_pill_aria: "展开音色克隆面板",
|
|
1837
|
+
voice_clone_err_provider_auth: "服务商拒绝了 API key,请到语音设置确认。",
|
|
1838
|
+
voice_clone_err_provider_quota: "服务商余额或订阅不支持克隆。",
|
|
1839
|
+
voice_clone_err_audio_too_short: "音频样本太短,无法用于克隆。",
|
|
1840
|
+
voice_clone_err_audio_too_long: "音频样本太长。",
|
|
1650
1841
|
ap_voice_locked_providers: "已接入 <b>MiniMax</b> · <b>ElevenLabs</b>",
|
|
1651
1842
|
ap_voice_modify_pitch: "音高",
|
|
1652
1843
|
ap_voice_modify_intensity: "力度",
|
|
1653
1844
|
ap_voice_modify_timbre: "音色",
|
|
1654
1845
|
ap_voice_preview_btn_title: "试听",
|
|
1655
1846
|
ap_voice_preview_sample: "你好,我是你的董事会成员,很高兴为你服务。",
|
|
1847
|
+
ap_voice_preview_text_label: "试听文案",
|
|
1848
|
+
ap_voice_section_voice: "音色",
|
|
1849
|
+
ap_voice_section_emotion: "情绪",
|
|
1850
|
+
ap_voice_section_preview: "试听文案",
|
|
1851
|
+
ap_voice_group_cloned_provider: "// 我克隆的音色 · {provider}",
|
|
1852
|
+
ap_voice_rename_btn: "重命名音色",
|
|
1853
|
+
ap_voice_rename_prompt: "为音色 {id} 起一个名字",
|
|
1854
|
+
ap_voice_rename_clear_confirm: "清除自定义名称,使用服务商提供的标签?",
|
|
1855
|
+
ap_voice_rename_err: "重命名失败: {msg}",
|
|
1656
1856
|
ap_voice_err_missing_permissions_title: "API key 缺少 voices_read 权限",
|
|
1657
1857
|
ap_voice_err_missing_permissions_body: "重新生成 API key 时勾选 voices_read scope,然后在 Voice Setup 重新粘贴。",
|
|
1658
1858
|
ap_voice_err_auth_failed_title: "ElevenLabs 拒绝了这个 API key",
|
|
@@ -1715,6 +1915,35 @@ When the room ___, raise an objection.`,
|
|
|
1715
1915
|
|
|
1716
1916
|
convene_show_more: "展开全文 ↓",
|
|
1717
1917
|
convene_show_less: "收起 ↑",
|
|
1918
|
+
// Thread · 与某位 director 的私聊小窗
|
|
1919
|
+
thread_trigger: "// 私聊",
|
|
1920
|
+
thread_trigger_short: "私聊",
|
|
1921
|
+
thread_trigger_label: "私聊",
|
|
1922
|
+
thread_trigger_tip: "把 {name} 拉到一边单聊",
|
|
1923
|
+
thread_head_kicker: "你和他的私聊",
|
|
1924
|
+
thread_minimize: "—",
|
|
1925
|
+
thread_minimize_tip: "最小化",
|
|
1926
|
+
thread_close: "✕",
|
|
1927
|
+
thread_close_tip: "关闭",
|
|
1928
|
+
thread_empty_title: "拉到一边聊聊",
|
|
1929
|
+
thread_empty_deck: "想从 {name} 那里挖什么?他已经掌握当前房间的全部上下文。",
|
|
1930
|
+
thread_composer_placeholder: "向 {name} 提问…",
|
|
1931
|
+
thread_send: "发送",
|
|
1932
|
+
thread_stop: "停止",
|
|
1933
|
+
thread_stop_tip: "打断当前回复",
|
|
1934
|
+
thread_maximize: "⛶",
|
|
1935
|
+
thread_maximize_tip: "最大化到右侧面板",
|
|
1936
|
+
thread_restore: "⊟",
|
|
1937
|
+
thread_restore_tip: "还原为悬浮窗",
|
|
1938
|
+
thread_dock_resize_tip: "拖动调整面板宽度",
|
|
1939
|
+
head_threads_tip: "查看本房间所有私聊",
|
|
1940
|
+
head_threads_label: "所有私聊",
|
|
1941
|
+
threads_list_title: "// 私聊列表",
|
|
1942
|
+
threads_list_loading: "加载中…",
|
|
1943
|
+
threads_list_empty: "暂无私聊 · 在任意 director 消息上点击 // Thread 按钮开启一个。",
|
|
1944
|
+
threads_list_active: "进行中",
|
|
1945
|
+
threads_list_delete_tip: "删除这条私聊",
|
|
1946
|
+
threads_list_delete_confirm: "确认删除与 {name} 的私聊?删除后无法恢复。",
|
|
1718
1947
|
convene_eyebrow: "▸ 召开 · 初始问题",
|
|
1719
1948
|
convene_meta_to: "致",
|
|
1720
1949
|
|
|
@@ -1734,6 +1963,7 @@ When the room ___, raise an objection.`,
|
|
|
1734
1963
|
msg_ws_query_label: "查询",
|
|
1735
1964
|
msg_ws_expand_hide: "收起",
|
|
1736
1965
|
msg_ws_secs: "{n} 秒",
|
|
1966
|
+
msg_ws_card_body: "已搜 \"{query}\"",
|
|
1737
1967
|
msg_chair_direct_kicker: "▸ 主席 · 直接回复你",
|
|
1738
1968
|
msg_chair_intervention_kicker: "▸ 主席说明",
|
|
1739
1969
|
msg_chair_billing_kicker: "▸ 计费 · 需要处理",
|
|
@@ -1818,6 +2048,7 @@ When the room ___, raise an objection.`,
|
|
|
1818
2048
|
head_record_label: "录制会议",
|
|
1819
2049
|
head_record_stop_tip: "停止录制 · 保存 .mp4",
|
|
1820
2050
|
head_record_stop_label: "停止录制",
|
|
2051
|
+
head_replay_stop_label: "停止",
|
|
1821
2052
|
rec_pill_label: "录制中",
|
|
1822
2053
|
rec_error_toast: "无法开始会议录制。请检查屏幕录制权限后重试。",
|
|
1823
2054
|
rec_exit_class: "录制中 · 请选择",
|
|
@@ -1844,6 +2075,17 @@ When the room ___, raise an objection.`,
|
|
|
1844
2075
|
rec_stop_cancel_mark: "↩ 取消",
|
|
1845
2076
|
rec_stop_cancel_deck: "留在这里 · 录制继续。",
|
|
1846
2077
|
rec_saved_toast: "录制已保存 · 文件已下载",
|
|
2078
|
+
rec_pause_save_class: "暂停 · 保存录制?",
|
|
2079
|
+
rec_pause_save_right: "// 进行中的录制",
|
|
2080
|
+
rec_pause_save_tag: "▸ 录制",
|
|
2081
|
+
rec_pause_save_title: "是否保存当前录制?",
|
|
2082
|
+
rec_pause_save_deck: "当前发言的董事已结束,房间已暂停。录制还在进行 — 请选择如何处理。",
|
|
2083
|
+
rec_pause_save_adjourn_mark: "✓ 保存并结束房间",
|
|
2084
|
+
rec_pause_save_adjourn_deck: "停止录制,下载文件,然后结束房间。",
|
|
2085
|
+
rec_pause_save_keep_mark: "✓ 保存并保持暂停",
|
|
2086
|
+
rec_pause_save_keep_deck: "停止录制并下载。房间保持暂停状态,稍后可以恢复。",
|
|
2087
|
+
rec_pause_save_continue_mark: "↩ 继续录制",
|
|
2088
|
+
rec_pause_save_continue_deck: "保持暂停 · 录制继续(注意:会录到一段静音)。",
|
|
1847
2089
|
resume_class: "继续 · 选择",
|
|
1848
2090
|
resume_right: "// 缺少语音密钥",
|
|
1849
2091
|
resume_tag: "▸ 语音模式需要密钥",
|
|
@@ -2372,7 +2614,8 @@ When the room ___, raise an objection.`,
|
|
|
2372
2614
|
us_user_tag: "▸ 用户",
|
|
2373
2615
|
us_user_deck: "董事会如何称呼你,以及它需要知道的背景。",
|
|
2374
2616
|
us_avatar: "头像",
|
|
2375
|
-
us_regen_avatar: "
|
|
2617
|
+
us_regen_avatar: "8-bit 头像",
|
|
2618
|
+
us_avatar3d: "3D 形象",
|
|
2376
2619
|
us_name: "姓名",
|
|
2377
2620
|
us_about: "关于你",
|
|
2378
2621
|
us_intro_ph: "一两句话写下你的角色、常思考的问题、手头项目。董事在每场会议里都会参考。",
|
|
@@ -2892,6 +3135,20 @@ When the room ___, raise an objection.`,
|
|
|
2892
3135
|
|
|
2893
3136
|
convene_show_more: "もっと見る ↓",
|
|
2894
3137
|
convene_show_less: "閉じる ↑",
|
|
3138
|
+
// Thread · 1人のディレクターと1対1の個別会話
|
|
3139
|
+
thread_trigger: "// 個別",
|
|
3140
|
+
thread_trigger_short: "個別に返信",
|
|
3141
|
+
thread_trigger_label: "個別",
|
|
3142
|
+
thread_trigger_tip: "{name}を脇に呼んで個別に話す",
|
|
3143
|
+
thread_head_kicker: "あなたとの個別チャット",
|
|
3144
|
+
thread_minimize: "—",
|
|
3145
|
+
thread_minimize_tip: "最小化",
|
|
3146
|
+
thread_close: "✕",
|
|
3147
|
+
thread_close_tip: "閉じる",
|
|
3148
|
+
thread_empty_title: "脇に呼ぶ",
|
|
3149
|
+
thread_empty_deck: "{name}に何を聞きたい?この部屋のここまでの文脈を彼は全部把握しています。",
|
|
3150
|
+
thread_composer_placeholder: "{name}に質問…",
|
|
3151
|
+
thread_send: "送信",
|
|
2895
3152
|
convene_eyebrow: "▸ 開始 · 最初の質問",
|
|
2896
3153
|
convene_meta_to: "宛先",
|
|
2897
3154
|
|
|
@@ -2994,6 +3251,7 @@ When the room ___, raise an objection.`,
|
|
|
2994
3251
|
head_record_label: "ミーティングを録画",
|
|
2995
3252
|
head_record_stop_tip: "録画を停止 · .mp4 を保存",
|
|
2996
3253
|
head_record_stop_label: "録画を停止",
|
|
3254
|
+
head_replay_stop_label: "停止",
|
|
2997
3255
|
rec_pill_label: "録画中",
|
|
2998
3256
|
rec_error_toast: "ミーティングの録画を開始できませんでした。画面録画の権限を確認してください。",
|
|
2999
3257
|
rec_exit_class: "録画中 · 選択",
|
|
@@ -3341,7 +3599,8 @@ When the room ___, raise an objection.`,
|
|
|
3341
3599
|
us_user_tag: "▸ ユーザー",
|
|
3342
3600
|
us_user_deck: "ボードルームでの呼称と、文脈として保持される情報。",
|
|
3343
3601
|
us_avatar: "アバター",
|
|
3344
|
-
us_regen_avatar: "8
|
|
3602
|
+
us_regen_avatar: "8ビットアバター",
|
|
3603
|
+
us_avatar3d: "3Dアバター",
|
|
3345
3604
|
us_name: "名前",
|
|
3346
3605
|
us_about: "あなたについて",
|
|
3347
3606
|
us_intro_ph: "あなたの役割、考えていること、取り組んでいることを一文か二文。ディレクターはこれを会議室全体で意識します。",
|
|
@@ -3826,6 +4085,20 @@ When the room ___, raise an objection.`,
|
|
|
3826
4085
|
|
|
3827
4086
|
convene_show_more: "Ver más ↓",
|
|
3828
4087
|
convene_show_less: "Ver menos ↑",
|
|
4088
|
+
// Thread · conversación privada 1:1 con un director
|
|
4089
|
+
thread_trigger: "// privado",
|
|
4090
|
+
thread_trigger_short: "Responder en privado",
|
|
4091
|
+
thread_trigger_label: "Privado",
|
|
4092
|
+
thread_trigger_tip: "Aparta a {name} en privado",
|
|
4093
|
+
thread_head_kicker: "privado contigo",
|
|
4094
|
+
thread_minimize: "—",
|
|
4095
|
+
thread_minimize_tip: "Minimizar",
|
|
4096
|
+
thread_close: "✕",
|
|
4097
|
+
thread_close_tip: "Cerrar",
|
|
4098
|
+
thread_empty_title: "Apártalo",
|
|
4099
|
+
thread_empty_deck: "¿Qué quieres ahondar con {name}? Tiene todo el contexto de la sala hasta este punto.",
|
|
4100
|
+
thread_composer_placeholder: "Pregúntale a {name}…",
|
|
4101
|
+
thread_send: "Enviar",
|
|
3829
4102
|
convene_eyebrow: "▸ Convocar · Pregunta inicial",
|
|
3830
4103
|
convene_meta_to: "para",
|
|
3831
4104
|
|
|
@@ -3928,6 +4201,7 @@ When the room ___, raise an objection.`,
|
|
|
3928
4201
|
head_record_label: "Grabar reunión",
|
|
3929
4202
|
head_record_stop_tip: "Detener grabación · guardar .mp4",
|
|
3930
4203
|
head_record_stop_label: "Detener grabación",
|
|
4204
|
+
head_replay_stop_label: "Detener",
|
|
3931
4205
|
rec_pill_label: "GRAB.",
|
|
3932
4206
|
rec_error_toast: "No se pudo iniciar la grabación. Revisa el permiso de captura de pantalla e inténtalo de nuevo.",
|
|
3933
4207
|
rec_exit_class: "grabando · elige",
|
|
@@ -4275,7 +4549,8 @@ When the room ___, raise an objection.`,
|
|
|
4275
4549
|
us_user_tag: "▸ Usuario",
|
|
4276
4550
|
us_user_deck: "cómo te llama la sala y qué sabe sobre tu contexto.",
|
|
4277
4551
|
us_avatar: "Avatar",
|
|
4278
|
-
us_regen_avatar: "
|
|
4552
|
+
us_regen_avatar: "avatar 8-bit",
|
|
4553
|
+
us_avatar3d: "avatar 3D",
|
|
4279
4554
|
us_name: "Nombre",
|
|
4280
4555
|
us_about: "Sobre ti",
|
|
4281
4556
|
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
|