@desktalk/core 0.1.0-alpha.2 → 0.1.0-alpha.3
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/frontend/assets/{frontend-DzPuSfWJ.js → frontend-BGrAEoc-.js} +2 -2
- package/dist/frontend/assets/{frontend-DzPuSfWJ.js.map → frontend-BGrAEoc-.js.map} +1 -1
- package/dist/frontend/assets/{frontend-Dn0dKARf.js → frontend-BWgJC5kX.js} +2 -2
- package/dist/frontend/assets/{frontend-Dn0dKARf.js.map → frontend-BWgJC5kX.js.map} +1 -1
- package/dist/frontend/assets/{frontend-yvqb_XNo.js → frontend-CTdbpot-.js} +2 -2
- package/dist/frontend/assets/{frontend-yvqb_XNo.js.map → frontend-CTdbpot-.js.map} +1 -1
- package/dist/frontend/assets/{frontend-BAknU-ge.js → frontend-CwxhooMD.js} +3 -3
- package/dist/frontend/assets/frontend-CwxhooMD.js.map +1 -0
- package/dist/frontend/assets/{frontend-DpmnQ1w4.js → frontend-DRTe8-9o.js} +3 -3
- package/dist/frontend/assets/frontend-DRTe8-9o.js.map +1 -0
- package/dist/frontend/assets/frontend-Dz_8vRz5.js +547 -0
- package/dist/frontend/assets/frontend-Dz_8vRz5.js.map +1 -0
- package/dist/frontend/assets/{frontend-0mUhlxkg.js → frontend-vY_f4fVI.js} +2 -2
- package/dist/frontend/assets/{frontend-0mUhlxkg.js.map → frontend-vY_f4fVI.js.map} +1 -1
- package/dist/frontend/assets/{highlighted-body-TPN3WLV5-BheGZsYG.js → highlighted-body-TPN3WLV5-CRT7miki.js} +2 -2
- package/dist/frontend/assets/{highlighted-body-TPN3WLV5-BheGZsYG.js.map → highlighted-body-TPN3WLV5-CRT7miki.js.map} +1 -1
- package/dist/frontend/assets/index-CI5Mxo87.js +1863 -0
- package/dist/frontend/assets/index-CI5Mxo87.js.map +1 -0
- package/dist/frontend/assets/index-D6_VuNyY.css +1 -0
- package/dist/frontend/index.html +3 -2
- package/dist/frontend/logo.png +0 -0
- package/dist/i18n/manifest.json +268 -0
- package/dist/i18n/zh-CN.json +53 -0
- package/dist/i18n/zh.json +60 -0
- package/dist/server/auth-routes.d.ts.map +1 -1
- package/dist/server/auth-routes.js +2 -2
- package/dist/server/auth-routes.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +14 -5
- package/dist/server/index.js.map +1 -1
- package/dist/server/thumbnail-routes.d.ts +3 -0
- package/dist/server/thumbnail-routes.d.ts.map +1 -0
- package/dist/server/thumbnail-routes.js +97 -0
- package/dist/server/thumbnail-routes.js.map +1 -0
- package/dist/services/ai/edit-history.d.ts +3 -7
- package/dist/services/ai/edit-history.d.ts.map +1 -1
- package/dist/services/ai/edit-history.js +145 -76
- package/dist/services/ai/edit-history.js.map +1 -1
- package/dist/services/ai/edit-tool.js +1 -1
- package/dist/services/ai/edit-tool.js.map +1 -1
- package/dist/services/ai/layout-tool.d.ts +8 -0
- package/dist/services/ai/layout-tool.d.ts.map +1 -0
- package/dist/services/ai/layout-tool.js +105 -0
- package/dist/services/ai/layout-tool.js.map +1 -0
- package/dist/services/ai/manual-pages/desktop-layout.md +34 -0
- package/dist/services/ai/manual-pages/desktop-windows.md +2 -0
- package/dist/services/ai/manual-pages/index.d.ts.map +1 -1
- package/dist/services/ai/manual-pages/index.js +9 -2
- package/dist/services/ai/manual-pages/index.js.map +1 -1
- package/dist/services/ai/pi-session-service.d.ts.map +1 -1
- package/dist/services/ai/pi-session-service.js +4 -0
- package/dist/services/ai/pi-session-service.js.map +1 -1
- package/dist/services/ai/redo-edit-tool.js +1 -1
- package/dist/services/ai/redo-edit-tool.js.map +1 -1
- package/dist/services/ai/undo-edit-tool.js +1 -1
- package/dist/services/ai/undo-edit-tool.js.map +1 -1
- package/dist/services/file-thumbnail.d.ts +20 -0
- package/dist/services/file-thumbnail.d.ts.map +1 -0
- package/dist/services/file-thumbnail.js +102 -0
- package/dist/services/file-thumbnail.js.map +1 -0
- package/dist/services/onboarding-config.d.ts +1 -1
- package/dist/services/onboarding-config.d.ts.map +1 -1
- package/dist/services/onboarding-config.js +10 -2
- package/dist/services/onboarding-config.js.map +1 -1
- package/package.json +11 -10
- package/dist/frontend/assets/frontend-B1Lvc6Rl.js +0 -413
- package/dist/frontend/assets/frontend-B1Lvc6Rl.js.map +0 -1
- package/dist/frontend/assets/frontend-BAknU-ge.js.map +0 -1
- package/dist/frontend/assets/frontend-DpmnQ1w4.js.map +0 -1
- package/dist/frontend/assets/index-BAa2HQwc.css +0 -1
- package/dist/frontend/assets/index-BEaTx9Vu.js +0 -1863
- package/dist/frontend/assets/index-BEaTx9Vu.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";._dockIcon_1xw56_1{display:flex;width:48px;height:48px;align-items:center;justify-content:center;font-size:20px;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}._dockIconImage_1xw56_11{width:100%;height:100%;border-radius:inherit;object-fit:cover;display:block}._panel_uttta_1{position:fixed;z-index:10050;display:grid;grid-template-columns:repeat(auto-fill,100px);gap:8px;min-width:340px;max-width:580px;padding:16px;border:1px solid var(--dt-glass-border);border-radius:8px;background:var(--dt-dock-bg);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);box-shadow:0 8px 28px var(--dt-shadow-color),0 1px 0 var(--dt-glass-highlight) inset,0 0 0 1px oklch(from var(--dt-accent) l c h/.3),0 0 6px 1px oklch(from var(--dt-accent) l c h/.15)}._empty_uttta_18{grid-column:1/-1;padding:12px 8px;color:var(--dt-text-muted);font-size:12px}._item_uttta_25{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;border:0;border-radius:8px;background:transparent;color:var(--dt-text);cursor:pointer;font-family:inherit;font-size:12px;text-align:center;transition:background .12s ease}._item_uttta_25:hover{background:var(--dt-accent-ghost)}._icon_uttta_45{width:48px;height:48px;flex-shrink:0;font-size:28px}._label_uttta_52{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}._actionsBar_1otoq_2{display:flex;align-items:center;gap:6px;height:100%;padding:0 12px;overflow:visible;background:var(--dt-actions-bar-bg);border-bottom:1px solid color-mix(in oklab,var(--dt-accent) 40%,transparent);color:var(--dt-text);font-size:13px;position:relative;z-index:10000}._launcherWrapper_1otoq_18{position:relative}._appName_1otoq_22{margin-right:12px;padding:4px 10px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--dt-text);cursor:pointer;font-family:inherit;font-size:13px;font-weight:700;white-space:nowrap;transition:background .15s ease,border-color .15s ease}._appName_1otoq_22:hover{background:color-mix(in oklab,var(--dt-surface) 64%,transparent);border-color:var(--dt-border-subtle)}._appNameActive_1otoq_41{background:color-mix(in oklab,var(--dt-surface) 80%,transparent);border-color:var(--dt-border)}._splitToggle_1otoq_47{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--dt-text);cursor:pointer;opacity:.72;transition:background .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}._splitToggle_1otoq_47:hover{background:color-mix(in oklab,var(--dt-surface) 64%,transparent);border-color:var(--dt-border-subtle);opacity:1}._splitToggleActive_1otoq_68{border-color:color-mix(in oklab,var(--dt-accent) 50%,transparent);color:var(--dt-accent);opacity:1}._splitToggleActive_1otoq_68:hover{background:var(--dt-accent-ghost);border-color:var(--dt-accent)}._separator_1otoq_79{width:1px;height:16px;margin:0 6px;background:var(--dt-border-subtle)}._action_1otoq_2{padding:4px 10px;border:1px solid var(--dt-border);border-radius:12px;background:color-mix(in oklab,var(--dt-surface) 64%,transparent);color:var(--dt-text);cursor:pointer;font-family:inherit;font-size:12px;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease}._action_1otoq_2:hover{border-color:var(--dt-accent);background:var(--dt-accent-ghost);color:var(--dt-accent)}._glowing_1otoq_104{animation:_accent-pulse_1otoq_1 1.2s ease-out}@keyframes _accent-pulse_1otoq_1{0%{border-color:var(--dt-accent)}to{border-color:var(--dt-border)}}._builtinAction_1otoq_116{opacity:.92}._builtinAction_1otoq_116:hover{opacity:1}._overlay_196os_1{position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,var(--dt-bg) 58%,transparent);backdrop-filter:blur(10px) saturate(.84)}._card_196os_13{display:flex;flex-direction:column;align-items:center;gap:12px;min-width:min(320px,100vw - 48px);padding:24px 28px;border:1px solid color-mix(in srgb,var(--dt-border) 88%,transparent);border-radius:18px;background:color-mix(in srgb,var(--dt-surface) 84%,transparent);box-shadow:0 20px 48px color-mix(in srgb,var(--dt-bg) 55%,transparent);text-align:center}._spinner_196os_27{width:28px;height:28px;border:3px solid color-mix(in srgb,var(--dt-border) 75%,transparent);border-top-color:var(--dt-accent);border-radius:999px;animation:_spin_196os_27 .9s linear infinite}._title_196os_36{color:var(--dt-text);font-size:18px;font-weight:600}._subtitle_196os_42{color:var(--dt-text-muted);font-size:13px;line-height:1.5;max-width:32ch}@keyframes _spin_196os_27{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._resizer_z2l6k_1{z-index:10;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;background:transparent}._horizontal_z2l6k_11{cursor:col-resize;flex-direction:row;width:100%;height:100%}._vertical_z2l6k_18{cursor:row-resize;flex-direction:column;width:100%;height:100%}._bar_z2l6k_25{border-radius:1px;opacity:.22;transition:opacity .15s ease,background-color .15s ease}._horizontal_z2l6k_11 ._bar_z2l6k_25{width:2px;height:100%;background:var(--dt-accent)}._vertical_z2l6k_18 ._bar_z2l6k_25{width:100%;height:2px;background:var(--dt-accent)}._resizer_z2l6k_1:hover ._bar_z2l6k_25,._resizer_z2l6k_1:active ._bar_z2l6k_25{opacity:.72}._overlay_19iyv_1{position:absolute;inset:0;z-index:15;pointer-events:none}._tileZone_19iyv_8{position:absolute;pointer-events:all}._highlight_19iyv_13{position:absolute;background:color-mix(in oklab,var(--dt-accent) 20%,transparent);border:2px dashed var(--dt-accent);border-radius:2px;transition:left .1s ease,top .1s ease,right .1s ease,bottom .1s ease,width .1s ease,height .1s ease;pointer-events:none}@keyframes sd-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sd-blurIn{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur(0)}}@keyframes sd-slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}[data-sd-animate]{animation:var(--sd-animation, sd-fadeIn) var(--sd-duration, .15s) var(--sd-easing, ease) both}._thinkingBlock_x27ux_1{margin-bottom:8px;border:1px dashed color-mix(in oklab,var(--dt-border) 60%,transparent);border-radius:6px;background:color-mix(in oklab,var(--dt-surface) 30%,var(--dt-bg));overflow:hidden}._thinkingToggle_x27ux_9{display:flex;align-items:center;gap:6px;width:100%;padding:6px 0;border:none;background:none;color:var(--dt-text-muted);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.03em;cursor:pointer;user-select:none}._thinkingChevron_x27ux_26{display:inline-block;font-size:10px;transition:transform .15s ease;transform:rotate(0)}._thinkingChevronOpen_x27ux_33{transform:rotate(90deg)}._thinkingContent_x27ux_37{padding:6px 10px 8px;border-top:1px dashed color-mix(in oklab,var(--dt-border) 40%,transparent);font-family:var(--font-mono);font-size:11px;line-height:1.4;color:var(--dt-text-muted);max-height:300px;overflow-y:auto;word-break:break-word}._thinkingContent_x27ux_37>:first-child{margin-top:0}._thinkingContent_x27ux_37>:last-child{margin-bottom:0}._thinkingContent_x27ux_37 p,._thinkingContent_x27ux_37 ul,._thinkingContent_x27ux_37 ol,._thinkingContent_x27ux_37 pre,._thinkingContent_x27ux_37 blockquote,._thinkingContent_x27ux_37 table,._thinkingContent_x27ux_37 h1,._thinkingContent_x27ux_37 h2,._thinkingContent_x27ux_37 h3,._thinkingContent_x27ux_37 h4,._thinkingContent_x27ux_37 h5,._thinkingContent_x27ux_37 h6{margin:0 0 .75em}._thinkingContent_x27ux_37 ul,._thinkingContent_x27ux_37 ol{padding-left:1.25em}._thinkingContent_x27ux_37 li+li{margin-top:.25em}._thinkingContent_x27ux_37 code{padding:.15em .4em;border-radius:6px;background:color-mix(in oklab,var(--dt-bg) 85%,transparent);font-family:var(--font-mono);font-size:.92em}._thinkingContent_x27ux_37 pre{overflow-x:auto;padding:.8em .95em;border:1px solid var(--dt-border-subtle);border-radius:12px;background:color-mix(in oklab,var(--dt-bg) 92%,transparent)}._thinkingContent_x27ux_37 pre code{padding:0;background:transparent}._thinkingContent_x27ux_37 blockquote{padding-left:.9em;border-left:3px solid var(--dt-border-subtle);color:var(--dt-text-secondary)}._thinkingContent_x27ux_37 a{color:var(--dt-accent);text-decoration:underline;text-underline-offset:.16em}._thinkingContent_x27ux_37 table{width:100%;border-collapse:collapse}._thinkingContent_x27ux_37 th,._thinkingContent_x27ux_37 td{padding:.45em .55em;border:1px solid var(--dt-border-subtle);text-align:left}._thinkingContent_x27ux_37 hr{margin:.9em 0;border:0;border-top:1px solid var(--dt-border-subtle)}._thinkingStreamingDot_x27ux_119{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--dt-text-muted);animation:_thinkingBounce_x27ux_1 1.4s ease-in-out infinite;vertical-align:middle;margin-left:4px}@keyframes _thinkingBounce_x27ux_1{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}._answeredQuestion_3nr33_1,._pendingQuestion_3nr33_2{display:flex;flex-direction:column;gap:10px;padding:10px 16px 12px;border-left:3px solid color-mix(in oklab,var(--dt-accent) 65%,var(--dt-border));background:color-mix(in oklab,var(--dt-accent) 7%,var(--dt-bg));font-family:var(--font-mono);font-size:12px;line-height:1.4}._answeredQuestion_3nr33_1{gap:4px;background:color-mix(in oklab,var(--dt-surface) 55%,var(--dt-bg));border-left-color:color-mix(in oklab,var(--dt-text-secondary) 50%,var(--dt-border))}._questionLabel_3nr33_20,._prompt_3nr33_21{color:var(--dt-text);font-weight:600}._answerLabel_3nr33_26{color:var(--dt-text-muted)}._controlsRow_3nr33_30{display:flex;gap:8px;align-items:center}._textInput_3nr33_36{min-width:0;flex:1 1 auto;padding:8px 10px;border:1px solid var(--dt-border-subtle);border-radius:10px;background:color-mix(in oklab,var(--dt-surface) 92%,transparent);color:var(--dt-text);font:inherit}._optionList_3nr33_47{display:flex;flex-direction:column;gap:8px}._optionItem_3nr33_53{display:flex;gap:8px;align-items:center;color:var(--dt-text-secondary)}._submitButton_3nr33_60,._secondaryButton_3nr33_61{padding:8px 12px;border:1px solid var(--dt-border-subtle);border-radius:10px;font:inherit;cursor:pointer}._submitButton_3nr33_60{background:color-mix(in oklab,var(--dt-accent) 20%,var(--dt-surface));color:var(--dt-text)}._secondaryButton_3nr33_61{background:color-mix(in oklab,var(--dt-surface) 90%,transparent);color:var(--dt-text-secondary)}._submitButton_3nr33_60:disabled{cursor:not-allowed;opacity:.55}@media(max-width:640px){._controlsRow_3nr33_30{flex-direction:column;align-items:stretch}}._message_xcgfi_1{padding:12px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.3;color:color-mix(in oklab,var(--dt-text) 85%,var(--dt-text-secondary))}._messageCompact_xcgfi_9{display:flex;align-items:center;gap:8px;padding:8px 10px;overflow:hidden}._messageUser_xcgfi_17{background:color-mix(in oklab,var(--dt-accent) 8%,var(--dt-bg));border-left:3px solid color-mix(in oklab,var(--dt-accent) 75%,var(--dt-border))}._messageAssistant_xcgfi_23{background:color-mix(in oklab,var(--dt-info) 6%,var(--dt-bg));border-left:3px solid color-mix(in oklab,var(--dt-info) 75%,var(--dt-border))}._messageToolCall_xcgfi_29{display:flex;align-items:center;gap:6px;padding:4px 16px;font-family:var(--font-mono);font-size:11px;line-height:1.4;color:var(--dt-text-muted);background:color-mix(in oklab,var(--dt-surface) 40%,var(--dt-bg));border-left:3px solid color-mix(in oklab,var(--dt-text-secondary) 55%,var(--dt-bg))}._toolCallLabel_xcgfi_42{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._messageHeader_xcgfi_48{display:flex;align-items:center;gap:8px;margin-bottom:8px}._messageSpeaker_xcgfi_55{font-weight:700;font-size:12px;letter-spacing:.05em;flex-shrink:0}._compactMessageText_xcgfi_62{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._messageUser_xcgfi_17 ._messageSpeaker_xcgfi_55{color:color-mix(in oklab,var(--dt-accent) 70%,var(--dt-text))}._messageAssistant_xcgfi_23 ._messageSpeaker_xcgfi_55{color:color-mix(in oklab,var(--dt-info) 70%,var(--dt-text))}._voiceSourceBadge_xcgfi_77{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;background:var(--dt-surface);color:var(--dt-text-muted);font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:lowercase;font-family:var(--font-mono)}._markdownContent_xcgfi_91{word-break:break-word}._markdownContent_xcgfi_91>:first-child{margin-top:0}._markdownContent_xcgfi_91>:last-child{margin-bottom:0}._markdownContent_xcgfi_91 p,._markdownContent_xcgfi_91 ul,._markdownContent_xcgfi_91 ol,._markdownContent_xcgfi_91 pre,._markdownContent_xcgfi_91 blockquote,._markdownContent_xcgfi_91 table,._markdownContent_xcgfi_91 h1,._markdownContent_xcgfi_91 h2,._markdownContent_xcgfi_91 h3,._markdownContent_xcgfi_91 h4,._markdownContent_xcgfi_91 h5,._markdownContent_xcgfi_91 h6{margin:0 0 .75em}._markdownContent_xcgfi_91 ul,._markdownContent_xcgfi_91 ol{padding-left:1.25em}._markdownContent_xcgfi_91 li+li{margin-top:.25em}._markdownContent_xcgfi_91 code{padding:.15em .4em;border-radius:6px;background:color-mix(in oklab,var(--dt-bg) 85%,transparent);font-family:var(--font-mono);font-size:.92em}._markdownContent_xcgfi_91 pre{overflow-x:auto;padding:.8em .95em;border:1px solid var(--dt-border-subtle);border-radius:12px;background:color-mix(in oklab,var(--dt-bg) 92%,transparent)}._markdownContent_xcgfi_91 pre code{padding:0;background:transparent}._markdownContent_xcgfi_91 blockquote{padding-left:.9em;border-left:3px solid var(--dt-accent-subtle);color:var(--dt-text-secondary)}._markdownContent_xcgfi_91 a{color:var(--dt-accent);text-decoration:underline;text-underline-offset:.16em}._markdownContent_xcgfi_91 table{width:100%;border-collapse:collapse;font-size:12px}._markdownContent_xcgfi_91 th,._markdownContent_xcgfi_91 td{padding:.45em .55em;border:1px solid var(--dt-border-subtle);text-align:left}._markdownContent_xcgfi_91 hr{margin:.9em 0;border:0;border-top:1px solid var(--dt-border-subtle)}._thinkingIndicator_xcgfi_166{display:flex;align-items:center;gap:4px;padding:4px 0}._thinkingDot_xcgfi_173{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--dt-text-muted);animation:_thinkingBounce_xcgfi_1 1.4s ease-in-out infinite}._thinkingDot_xcgfi_173:nth-child(2){animation-delay:.2s}._thinkingDot_xcgfi_173:nth-child(3){animation-delay:.4s}@keyframes _thinkingBounce_xcgfi_1{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}._controlFrame_1v03g_2{position:relative;border-top:1px solid var(--dt-border-subtle);background:var(--dt-bg)}._controlFrameCompact_1v03g_8{border-top:none;background:transparent}._slashMenu_1v03g_14{position:absolute;bottom:100%;left:0;right:0;margin:0;padding:4px;list-style:none;background:var(--dt-surface);border:1px solid var(--dt-border);border-bottom:none;border-radius:8px 8px 0 0;box-shadow:0 -4px 16px #0000001f;font-family:var(--font-mono);font-size:13px;z-index:10}._slashMenuItem_1v03g_32{display:flex;align-items:baseline;gap:10px;padding:6px 10px;border-radius:6px;cursor:pointer;transition:background .1s}._slashMenuItemActive_1v03g_42{background:var(--dt-accent-ghost)}._slashMenuName_1v03g_46{color:var(--dt-accent);font-weight:600;white-space:nowrap}._slashMenuDesc_1v03g_52{color:var(--dt-text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._inputRow_1v03g_60{display:flex;align-items:flex-end;gap:8px;padding:12px 16px}._inputRowCompact_1v03g_67{gap:6px;padding:8px 10px}._input_1v03g_60{flex:1;padding:8px 0;border:none;border-bottom:2px solid var(--dt-border);border-radius:0;outline:none;background:transparent;color:var(--dt-text);font-family:var(--font-mono);font-size:14px;line-height:1.4;resize:none;transition:border-color .2s}._input_1v03g_60::placeholder{color:var(--dt-text-muted)}._input_1v03g_60:focus{border-color:var(--dt-accent)}._input_1v03g_60:disabled{opacity:.6;cursor:not-allowed}._inputCompact_1v03g_98{padding:6px 0;font-size:13px}._statusRow_1v03g_103{display:flex;align-items:center;gap:12px;padding:6px 16px 8px;border-top:1px solid var(--dt-border-subtle);background:var(--dt-bg-subtle);font-family:var(--font-mono);font-size:11px}._statusItem_1v03g_114{color:var(--dt-text-muted)}._statusDivider_1v03g_118{color:var(--dt-border);user-select:none}._voiceButton_1v03g_123{display:flex;width:36px;height:36px;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--dt-border);border-radius:4px;background:var(--dt-surface);color:var(--dt-text-secondary);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}._voiceButton_1v03g_123:hover{border-color:var(--dt-accent);background:var(--dt-accent-ghost);color:var(--dt-accent)}._voiceButtonCompact_1v03g_143{width:32px;height:32px}._voiceButtonActive_1v03g_148{background:var(--dt-danger-subtle);border-color:var(--dt-danger);color:var(--dt-danger)}._voiceButtonActive_1v03g_148:hover{background:color-mix(in oklab,var(--dt-danger) 15%,var(--dt-surface));border-color:var(--dt-danger);color:var(--dt-danger)}@keyframes _voicePulse_1v03g_1{0%,to{box-shadow:0 0 color-mix(in oklab,var(--dt-danger) 22%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklab,var(--dt-danger) 0%,transparent)}}._infoPanel_1fshd_1{display:flex;height:100%;flex-direction:column;overflow:hidden;border-left:1px solid var(--dt-border-subtle);background:color-mix(in oklab,var(--dt-info-panel-bg) 88%,transparent);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%)}._header_1fshd_12{display:flex;align-items:center;justify-content:space-between;padding:10px 8px;border-bottom:1px solid var(--dt-border-subtle);background:var(--dt-bg-subtle);color:var(--dt-text);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}._headerPrimary_1fshd_27{position:relative;display:flex;flex:1;min-width:0;align-items:center;gap:12px}._sessionControls_1fshd_36{position:relative;display:flex;flex:1;min-width:0;align-items:center;gap:8px}._sessionControls_1fshd_36 dt-select{flex:1 1 0%;min-width:0}._newSessionButton_1fshd_49{border:1px solid var(--dt-border-subtle);background:color-mix(in oklab,var(--dt-surface) 88%,transparent);color:var(--dt-text);transition:border-color .14s ease,background-color .14s ease,color .14s ease}._newSessionButton_1fshd_49:hover:not(:disabled){border-color:color-mix(in oklab,var(--dt-accent) 35%,var(--dt-border-subtle));background:color-mix(in oklab,var(--dt-surface) 94%,var(--dt-accent-ghost))}._newSessionButton_1fshd_49:disabled{cursor:not-allowed;opacity:.5}._newSessionButton_1fshd_49{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:999px;font-size:16px;line-height:1}._headerControls_1fshd_75{display:flex;align-items:center;gap:12px}._tokenCount_1fshd_81{color:var(--dt-text-muted);font-size:11px;font-weight:500}@media(max-width:640px){._header_1fshd_12{align-items:flex-start;flex-direction:column;gap:8px}._headerPrimary_1fshd_27{width:100%;flex-direction:column;align-items:flex-start}._sessionControls_1fshd_36{width:100%}._headerControls_1fshd_75{width:100%;justify-content:space-between}}._messages_1fshd_106{display:flex;flex:1;flex-direction:column;overflow-y:auto;padding:0}._placeholder_1fshd_114{display:flex;flex:1;align-items:center;justify-content:center;padding:20px;color:var(--dt-text-muted);font-size:13px;text-align:center}._queuedMessage_1fshd_125{padding:12px 16px;border-left:3px solid color-mix(in oklab,var(--dt-warning, var(--dt-accent)) 70%,var(--dt-border));background:color-mix(in oklab,var(--dt-warning, var(--dt-accent)) 8%,var(--dt-bg));color:color-mix(in oklab,var(--dt-text) 85%,var(--dt-text-secondary));font-family:var(--font-mono);font-size:12px;line-height:1.3;opacity:.9}._queuedMessageHeader_1fshd_136{display:flex;align-items:center;gap:8px;margin-bottom:8px}._queuedSpeaker_1fshd_143{color:color-mix(in oklab,var(--dt-warning, var(--dt-accent)) 70%,var(--dt-text));font-size:12px;font-weight:700;letter-spacing:.05em}._queuedBadge_1fshd_150{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;background:var(--dt-surface);color:var(--dt-text-muted);font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:lowercase}._queuedMessageBody_1fshd_163{word-break:break-word}._partialTranscript_1fshd_167{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid color-mix(in oklab,var(--dt-accent) 35%,var(--dt-border));border-radius:12px;background:var(--dt-accent-ghost);color:var(--dt-text-secondary);font-size:13px;font-style:italic}._partialDot_1fshd_180{display:inline-block;width:8px;height:8px;flex-shrink:0;border-radius:50%;background:var(--dt-accent);animation:_statusBlink_1fshd_1 .6s ease-in-out infinite}._voiceListening_1fshd_190,._voiceSpeaking_1fshd_191,._voiceProcessing_1fshd_192{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12px}._voiceListening_1fshd_190{color:var(--dt-text-muted)}._listeningDot_1fshd_204{display:inline-block;width:8px;height:8px;flex-shrink:0;border-radius:50%;background:var(--dt-success);animation:_statusBlink_1fshd_1 2s ease-in-out infinite}._voiceSpeaking_1fshd_191{color:var(--dt-danger)}._speakingWave_1fshd_218{display:inline-block;width:12px;height:12px;flex-shrink:0;border-radius:50%;background:color-mix(in oklab,var(--dt-danger) 70%,transparent);animation:_speakingPulse_1fshd_1 .8s ease-in-out infinite}@keyframes _speakingPulse_1fshd_1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}._voiceProcessing_1fshd_192{color:var(--dt-info)}._voiceError_1fshd_242{padding:10px 14px;border:1px solid color-mix(in oklab,var(--dt-danger) 40%,var(--dt-border));border-radius:12px;background:var(--dt-danger-subtle);color:var(--dt-danger);font-size:12px}._compactPanel_gtst9_1{position:fixed;top:16px;right:16px;width:320px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);z-index:30;display:flex;flex-direction:column;background:color-mix(in srgb,var(--dt-bg) 92%,transparent);backdrop-filter:blur(20px) saturate(160%);border:1px solid var(--dt-border);border-radius:12px;box-shadow:0 8px 32px color-mix(in oklab,black 40%,transparent),0 2px 8px color-mix(in oklab,black 20%,transparent);animation:_slideIn_gtst9_1 .2s cubic-bezier(.2,.9,.2,1);user-select:none}@keyframes _slideIn_gtst9_1{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}._dragHandle_gtst9_30{height:20px;display:flex;align-items:center;justify-content:center;cursor:grab;border-bottom:1px solid var(--dt-border);background:color-mix(in srgb,var(--dt-fg) 4%,transparent);border-radius:12px 12px 0 0;transition:background .15s ease}._dragHandle_gtst9_30:hover{background:color-mix(in srgb,var(--dt-fg) 8%,transparent)}._dragHandle_gtst9_30:active{cursor:grabbing}._dragHandleLine_gtst9_50{width:32px;height:3px;background:color-mix(in srgb,var(--dt-fg) 30%,transparent);border-radius:2px}._messageArea_gtst9_57{flex:1;overflow-y:auto;padding:8px 10px;max-height:120px}._placeholder_gtst9_64{padding:12px;text-align:center;color:color-mix(in srgb,var(--dt-fg) 50%,transparent);font-size:12px}._partialTranscript_gtst9_71{display:flex;align-items:center;gap:8px;padding:6px 10px;margin-top:6px;background:color-mix(in srgb,var(--dt-accent) 10%,transparent);border-radius:6px;font-size:12px;color:var(--dt-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._partialDot_gtst9_86{width:6px;height:6px;background:var(--dt-accent);border-radius:50%;animation:_pulse_gtst9_1 1s ease-in-out infinite}@keyframes _pulse_gtst9_1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}._voiceListening_gtst9_104,._voiceSpeaking_gtst9_105,._voiceProcessing_gtst9_106{display:flex;align-items:center;gap:8px;padding:6px 10px;margin-top:6px;font-size:12px;color:color-mix(in srgb,var(--dt-fg) 70%,transparent)}._listeningDot_gtst9_116,._speakingWave_gtst9_117{width:6px;height:6px;background:var(--dt-accent);border-radius:50%}._listeningDot_gtst9_116{animation:_pulse_gtst9_1 1s ease-in-out infinite}._speakingWave_gtst9_117{animation:_wave_gtst9_1 .8s ease-in-out infinite}@keyframes _wave_gtst9_1{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.6}}._voiceProcessing_gtst9_106{background:color-mix(in srgb,var(--dt-fg) 5%,transparent);border-radius:6px}._commandInputWrapper_gtst9_147{border-top:1px solid var(--dt-border);padding:0;background:color-mix(in srgb,var(--dt-fg) 2%,transparent);border-radius:0 0 12px 12px}._messageArea_gtst9_57::-webkit-scrollbar{width:6px}._messageArea_gtst9_57::-webkit-scrollbar-track{background:transparent}._messageArea_gtst9_57::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--dt-fg) 20%,transparent);border-radius:3px}._messageArea_gtst9_57::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--dt-fg) 30%,transparent)}._window_k9cdu_1{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;border:1px solid color-mix(in oklab,var(--dt-accent) 60%,var(--dt-border));border-radius:2px;box-shadow:0 4px 20px color-mix(in oklab,black 60%,transparent);transition:border-color .2s ease,box-shadow .2s ease}._windowFocused_k9cdu_16{border-color:color-mix(in oklab,var(--dt-accent) 80%,var(--dt-border));box-shadow:0 4px 24px color-mix(in oklab,black 70%,transparent),0 0 12px color-mix(in oklab,var(--dt-accent) 15%,transparent)}._windowDragging_k9cdu_21{opacity:.5;border:1px dashed color-mix(in oklab,var(--dt-accent) 60%,var(--dt-border));box-shadow:none;transition:opacity .15s ease,border-color .15s ease}._windowFullscreen_k9cdu_28{position:fixed;top:calc(var(--actions-bar-height) + 58px);right:64px;bottom:64px;left:64px;width:auto;height:auto;z-index:25;border-radius:2px;border:1px solid color-mix(in oklab,var(--dt-accent) 60%,var(--dt-border));box-shadow:0 24px 72px color-mix(in oklab,black 80%,transparent),0 0 20px color-mix(in oklab,var(--dt-accent) 20%,transparent);transform-origin:center center;animation:_maximizeZoomIn_k9cdu_1 .22s cubic-bezier(.2,.9,.2,1)}@keyframes _maximizeZoomIn_k9cdu_1{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}._chrome_k9cdu_54{display:flex;height:24px;flex-shrink:0;align-items:center;padding:0 10px;background:color-mix(in oklab,var(--dt-surface) 70%,black);border-bottom:1px solid color-mix(in oklab,var(--dt-accent) 40%,var(--dt-border));user-select:none}._trafficLights_k9cdu_65{display:flex;gap:6px;margin-right:10px}._trafficLight_k9cdu_65{width:10px;height:10px;padding:0;border:1px solid currentColor;border-radius:2px;cursor:pointer;background:transparent;color:var(--dt-text-muted);transition:all .1s ease}._trafficLight_k9cdu_65:hover{color:var(--dt-accent);border-color:var(--dt-accent);background:var(--dt-accent)}._trafficLightClose_k9cdu_88{color:var(--dt-danger);border-color:var(--dt-danger)}._trafficLightClose_k9cdu_88:hover{color:var(--dt-text-on-accent);background:var(--dt-danger);border-color:var(--dt-danger)}._trafficLightFullscreen_k9cdu_99{color:var(--dt-success);border-color:var(--dt-success)}._trafficLightFullscreen_k9cdu_99:hover{color:var(--dt-text-on-accent);background:var(--dt-success);border-color:var(--dt-success)}._title_k9cdu_110{flex:1;overflow:hidden;color:color-mix(in oklab,var(--dt-accent) 70%,var(--dt-text-muted));font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace);font-size:10px;font-weight:600;letter-spacing:.08em;text-align:center;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}._body_k9cdu_124{flex:1;min-height:0;overflow:auto;background:color-mix(in oklab,var(--dt-bg) 85%,black)}._tileSplit_zwnh1_1{display:grid;width:100%;height:100%;min-width:0;min-height:0}._tileSplitHorizontal_zwnh1_9{grid-template-rows:minmax(0,1fr);align-items:stretch}._tileSplitVertical_zwnh1_14{grid-template-columns:minmax(0,1fr);align-items:stretch}._tilePane_zwnh1_19,._tileLeaf_zwnh1_20{min-width:0;min-height:0}._tileLeaf_zwnh1_20{width:100%;height:100%}._shell_1jqjo_1{display:flex;flex-direction:column;width:100vw;height:100vh;background:var(--dt-wallpaper) center/cover no-repeat;position:fixed;top:0;left:0}._actionsBar_1jqjo_12{flex:0 0 var(--actions-bar-height);min-height:42px;position:relative;z-index:30}._content_1jqjo_19{display:grid;flex:1 1 auto;min-width:0;min-height:0;position:relative;overflow:hidden}._desktop_1jqjo_28{flex:1 1 auto;position:relative;overflow:hidden;min-width:0;min-height:0}._assistantPane_1jqjo_36{min-width:0;min-height:0;overflow:hidden}._maximizedMask_1jqjo_42{position:absolute;inset:0;z-index:20;background:color-mix(in srgb,var(--dt-bg) 46%,transparent);backdrop-filter:blur(4px) saturate(.84);pointer-events:none}._page_1nc9w_1{display:flex;align-items:center;justify-content:center;width:100vw;height:100vh;background:var(--dt-wallpaper) center/cover no-repeat}._logo_1nc9w_10{font-size:28px;font-weight:700;color:var(--dt-text);letter-spacing:-.5px}._form_1nc9w_17{display:flex;flex-direction:column;gap:16px;width:100%}._field_1nc9w_24{display:flex;flex-direction:column;gap:6px}._label_1nc9w_30{font-size:12px;font-weight:500;color:var(--dt-text-secondary);text-transform:uppercase;letter-spacing:.5px}._input_1nc9w_38{padding:10px 12px;font-size:14px;font-family:var(--font-ui);color:var(--dt-text);background:var(--dt-surface);border:1px solid var(--dt-border);border-radius:2px;outline:none;transition:border-color .15s ease}._input_1nc9w_38:focus{border-color:var(--dt-accent)}._input_1nc9w_38::placeholder{color:var(--dt-text-muted)}._error_1nc9w_56{font-size:13px;color:var(--dt-danger);text-align:center;min-height:1.4em}._modal_2xb7m_1{display:flex;flex-direction:column;gap:24px;padding:40px 36px 36px;max-width:90vw;background:var(--dt-bg);border:1px solid var(--dt-border);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}._small_2xb7m_13{width:360px}._medium_2xb7m_17{width:560px}._large_2xb7m_21{width:720px}@media(max-width:640px){._modal_2xb7m_1{width:min(92vw,560px);padding:28px 20px 20px}._small_2xb7m_13{width:min(92vw,360px)}._medium_2xb7m_17{width:min(92vw,560px)}._large_2xb7m_21{width:min(92vw,720px)}}._page_kb1dd_1{display:flex;align-items:center;justify-content:center;width:100vw;height:100vh;background:var(--dt-wallpaper) center/cover no-repeat}._header_kb1dd_10{text-align:center}._title_kb1dd_14{font-size:22px;font-weight:700;color:var(--dt-text);margin-bottom:4px}._subtitle_kb1dd_21{font-size:14px;color:var(--dt-text-secondary)}._stepIndicator_kb1dd_26{display:flex;justify-content:center;gap:8px}._dot_kb1dd_32{width:8px;height:8px;border-radius:50%;background:var(--dt-border);transition:background .2s ease}._dotActive_kb1dd_40{background:var(--dt-accent)}._dotCompleted_kb1dd_45{background:var(--dt-accent-subtle)}._body_kb1dd_50{display:flex;flex-direction:column;gap:16px}._welcomeOptions_kb1dd_56{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}._providerList_kb1dd_62{display:flex;flex-direction:column;gap:12px}._providerCard_kb1dd_68{margin:0}._providerCard_kb1dd_68 dt-card{display:block;margin:0}._providerCardBody_kb1dd_77{display:flex;flex-direction:column;gap:14px}._providerCardHeader_kb1dd_83{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}._providerCardTitleRow_kb1dd_90{display:flex;align-items:center;gap:8px}._providerCardTitle_kb1dd_90{font-size:14px;font-weight:600;color:var(--dt-text)}._providerCardActions_kb1dd_102{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}._providerButtonWrap_kb1dd_109,._providerActionButtonWrap_kb1dd_110{display:inline-flex}._providerButtonWrap_kb1dd_109 dt-button,._providerActionButtonWrap_kb1dd_110 dt-button{display:inline-flex}._providerSelectWrap_kb1dd_119{width:100%}._providerSelectWrap_kb1dd_119 dt-select{display:block;width:100%}._providerFieldGrid_kb1dd_128{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}._field_kb1dd_134{display:flex;flex-direction:column;gap:6px}._label_kb1dd_140{font-size:12px;font-weight:500;color:var(--dt-text-secondary);text-transform:uppercase;letter-spacing:.5px}._input_kb1dd_148{padding:10px 12px;font-size:14px;font-family:var(--font-ui);color:var(--dt-text);background:var(--dt-surface);border:1px solid var(--dt-border);border-radius:2px;outline:none;transition:border-color .15s ease,background .15s ease}._input_kb1dd_148:focus{border-color:var(--dt-accent);background:var(--dt-bg)}._input_kb1dd_148::placeholder{color:var(--dt-text-muted)}._colorControl_kb1dd_167{display:flex;gap:10px}._colorInput_kb1dd_172{width:44px;min-width:44px;height:40px;padding:4px;border:1px solid var(--dt-border);border-radius:2px;background:var(--dt-surface);cursor:pointer}._footer_kb1dd_183{display:flex;justify-content:space-between;gap:12px}._error_kb1dd_189{font-size:13px;color:var(--dt-danger);text-align:center;min-height:1.4em}._welcomeText_kb1dd_196{font-size:14px;line-height:1.6;color:var(--dt-text-secondary);text-align:center}._hintText_kb1dd_203{font-size:13px;line-height:1.5;color:var(--dt-text-secondary);text-align:center;margin:0}._doneText_kb1dd_211{font-size:15px;line-height:1.6;color:var(--dt-text);text-align:center}._footerActions_kb1dd_218{display:flex;gap:8px;margin-left:auto}@media(max-width:640px){._providerCardHeader_kb1dd_83,._providerCardActions_kb1dd_102,._footer_kb1dd_183,._footerActions_kb1dd_218{flex-direction:column}._welcomeOptions_kb1dd_56{grid-template-columns:1fr}._providerCardActions_kb1dd_102,._footerActions_kb1dd_218{margin-left:0}._providerButtonWrap_kb1dd_109,._providerActionButtonWrap_kb1dd_110{width:100%}._providerFieldGrid_kb1dd_128{grid-template-columns:1fr}._providerButtonWrap_kb1dd_109 dt-button,._providerActionButtonWrap_kb1dd_110 dt-button{width:100%;margin-left:0}}:root{--dt-accent-h: 286;--dt-accent-c: .234;--dt-accent-l: .623;--dt-mode-sign: -1;--dt-scale-50: oklch(.98 .005 286);--dt-scale-100: oklch(.94 .01 286);--dt-scale-150: oklch(.88 .015 286);--dt-scale-200: oklch(.8 .02 286);--dt-scale-300: oklch(.7 .025 286);--dt-scale-400: oklch(.6 .03 286);--dt-scale-500: oklch(.5 .04 286);--dt-scale-600: oklch(.4 .03 286);--dt-scale-700: oklch(.32 .025 286);--dt-scale-800: oklch(.24 .03 286);--dt-scale-850: oklch(.2 .035 286);--dt-scale-900: oklch(.16 .04 286);--dt-scale-950: oklch(.12 .05 286);--dt-bg: var(--dt-scale-50);--dt-bg-subtle: var(--dt-scale-100);--dt-surface: var(--dt-scale-100);--dt-surface-hover: var(--dt-scale-150);--dt-surface-active: var(--dt-scale-200);--dt-overlay: oklch(.98 .005 286 / .85);--dt-text: var(--dt-scale-950);--dt-text-secondary: var(--dt-scale-600);--dt-text-muted: var(--dt-scale-500);--dt-text-on-accent: var(--dt-scale-50);--dt-border: var(--dt-scale-200);--dt-border-subtle: oklch(.88 .015 286 / .6);--dt-border-strong: var(--dt-scale-300);--dt-accent: oklch(.623 .234 286);--dt-accent-hover: oklch(.573 .234 286);--dt-accent-active: oklch(.523 .234 286);--dt-accent-subtle: oklch(.623 .234 286 / .15);--dt-accent-ghost: oklch(.623 .234 286 / .08);--dt-danger: oklch(.45 .18 25);--dt-danger-subtle: oklch(.45 .18 25 / .15);--dt-success: oklch(.45 .18 155);--dt-success-subtle: oklch(.45 .18 155 / .15);--dt-warning: oklch(.45 .18 80);--dt-warning-subtle: oklch(.45 .18 80 / .15);--dt-info: oklch(.45 .18 250);--dt-info-subtle: oklch(.45 .18 250 / .15);--dt-dock-bg: var(--dt-overlay);--dt-actions-bar-bg: var(--dt-bg-subtle);--dt-window-chrome: var(--dt-surface);--dt-window-body: var(--dt-bg);--dt-info-panel-bg: var(--dt-bg-subtle);--dt-wallpaper: linear-gradient( 135deg, oklch(.85 .06 286) 0%, oklch(.8 .08 286) 50%, oklch(.75 .03 316) 100% );--dt-glass: oklch(.94 .01 286 / .7);--dt-glass-border: oklch(.12 .05 286 / .12);--dt-glass-highlight: oklch(.98 .005 286 / .45);--dt-shadow-color: oklch(.12 .05 286 / .15);--color-bg: var(--dt-bg);--color-surface: var(--dt-surface);--color-surface-hover: var(--dt-surface-hover);--color-border: var(--dt-border);--color-border-subtle: var(--dt-border-subtle);--color-text: var(--dt-text);--color-text-muted: var(--dt-text-muted);--color-accent: var(--dt-accent);--color-accent-hover: var(--dt-accent-hover);--color-danger: var(--dt-danger);--color-success: var(--dt-success);--color-warning: var(--dt-warning);--color-warning-bg: var(--dt-warning-subtle);--color-info: var(--dt-info);--color-dock-bg: var(--dt-dock-bg);--color-actions-bar-bg: var(--dt-actions-bar-bg);--color-window-chrome: var(--dt-window-chrome);--color-window-body: var(--dt-window-body);--color-top-bar-bg: var(--dt-actions-bar-bg);--color-top-bar-text: var(--dt-text);--color-top-bar-text-shadow: none;--desktop-wallpaper: var(--dt-wallpaper);--desktop-window-bg: var(--dt-info-panel-bg);--font-display: "Sora", system-ui, -apple-system, sans-serif;--font-ui: "Work Sans", system-ui, -apple-system, sans-serif;--font-sans: var(--font-ui);--font-mono: "SF Mono", "Fira Code", "Cascadia Code", monospace;--dock-height: 64px;--actions-bar-height: 36px;--info-panel-width: 320px;--window-chrome-height: 36px;--border-radius: 8px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:var(--font-sans);font-size:14px;color:var(--dt-text);background:var(--dt-bg)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}
|
package/dist/frontend/index.html
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>DeskTalk</title>
|
|
7
|
+
<link rel="icon" type="image/png" href="/logo.png" />
|
|
7
8
|
<link rel="stylesheet" href="/api/ui/fonts/fonts.css" />
|
|
8
9
|
<style>
|
|
9
10
|
/* Prevent flash of unstyled content */
|
|
@@ -13,8 +14,8 @@
|
|
|
13
14
|
margin: 0;
|
|
14
15
|
}
|
|
15
16
|
</style>
|
|
16
|
-
<script type="module" crossorigin src="/assets/index-
|
|
17
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
17
|
+
<script type="module" crossorigin src="/assets/index-CI5Mxo87.js"></script>
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D6_VuNyY.css">
|
|
18
19
|
</head>
|
|
19
20
|
<body>
|
|
20
21
|
<div id="root"></div>
|
|
Binary file
|
package/dist/i18n/manifest.json
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"packageName": "@desktalk/core",
|
|
3
3
|
"packageScope": "core",
|
|
4
4
|
"locales": [
|
|
5
|
+
"zh",
|
|
5
6
|
"zh-CN"
|
|
6
7
|
],
|
|
7
8
|
"messages": [
|
|
@@ -15,6 +16,273 @@
|
|
|
15
16
|
"defaultText": "Close",
|
|
16
17
|
"placeholders": []
|
|
17
18
|
},
|
|
19
|
+
{
|
|
20
|
+
"key": "onboard.account.confirmPassword",
|
|
21
|
+
"defaultText": "Confirm Password",
|
|
22
|
+
"placeholders": []
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"key": "onboard.account.confirmPasswordPlaceholder",
|
|
26
|
+
"defaultText": "Re-enter your password",
|
|
27
|
+
"placeholders": []
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"key": "onboard.account.displayName",
|
|
31
|
+
"defaultText": "Display Name",
|
|
32
|
+
"placeholders": []
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"key": "onboard.account.displayNamePlaceholder",
|
|
36
|
+
"defaultText": "Your display name",
|
|
37
|
+
"placeholders": []
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"key": "onboard.account.errors.displayNameRequired",
|
|
41
|
+
"defaultText": "Display name is required.",
|
|
42
|
+
"placeholders": []
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"key": "onboard.account.errors.passwordMismatch",
|
|
46
|
+
"defaultText": "Passwords do not match.",
|
|
47
|
+
"placeholders": []
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"key": "onboard.account.errors.passwordShort",
|
|
51
|
+
"defaultText": "Password must be at least 8 characters.",
|
|
52
|
+
"placeholders": []
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"key": "onboard.account.errors.usernameInvalid",
|
|
56
|
+
"defaultText": "Username must be 1-32 alphanumeric characters, hyphens, or underscores.",
|
|
57
|
+
"placeholders": []
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"key": "onboard.account.errors.usernameRequired",
|
|
61
|
+
"defaultText": "Username is required.",
|
|
62
|
+
"placeholders": []
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"key": "onboard.account.password",
|
|
66
|
+
"defaultText": "Password",
|
|
67
|
+
"placeholders": []
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"key": "onboard.account.passwordPlaceholder",
|
|
71
|
+
"defaultText": "At least 8 characters",
|
|
72
|
+
"placeholders": []
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"key": "onboard.account.subtitle",
|
|
76
|
+
"defaultText": "Choose your credentials",
|
|
77
|
+
"placeholders": []
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"key": "onboard.account.title",
|
|
81
|
+
"defaultText": "Create Admin Account",
|
|
82
|
+
"placeholders": []
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"key": "onboard.account.username",
|
|
86
|
+
"defaultText": "Username",
|
|
87
|
+
"placeholders": []
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"key": "onboard.account.usernamePlaceholder",
|
|
91
|
+
"defaultText": "e.g. admin",
|
|
92
|
+
"placeholders": []
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"key": "onboard.ai.apiKeyPlaceholder",
|
|
96
|
+
"defaultText": "Enter your API key",
|
|
97
|
+
"placeholders": []
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"key": "onboard.ai.baseUrlPlaceholder",
|
|
101
|
+
"defaultText": "Custom API endpoint",
|
|
102
|
+
"placeholders": []
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"key": "onboard.ai.body",
|
|
106
|
+
"defaultText": "Set up an AI provider so DeskTalk's assistant is ready to use. You can change these settings later in Preferences.",
|
|
107
|
+
"placeholders": []
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"key": "onboard.ai.modelPlaceholder",
|
|
111
|
+
"defaultText": "e.g. gpt-4o",
|
|
112
|
+
"placeholders": []
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"key": "onboard.ai.subtitle",
|
|
116
|
+
"defaultText": "Configure your AI provider (optional)",
|
|
117
|
+
"placeholders": []
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"key": "onboard.ai.title",
|
|
121
|
+
"defaultText": "AI Configuration",
|
|
122
|
+
"placeholders": []
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"key": "onboard.common.addProvider",
|
|
126
|
+
"defaultText": "Add provider",
|
|
127
|
+
"placeholders": []
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"key": "onboard.common.apiKey",
|
|
131
|
+
"defaultText": "API Key",
|
|
132
|
+
"placeholders": []
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"key": "onboard.common.back",
|
|
136
|
+
"defaultText": "Back",
|
|
137
|
+
"placeholders": []
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"key": "onboard.common.baseUrlOptional",
|
|
141
|
+
"defaultText": "Base URL (optional)",
|
|
142
|
+
"placeholders": []
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"key": "onboard.common.default",
|
|
146
|
+
"defaultText": "Default",
|
|
147
|
+
"placeholders": []
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"key": "onboard.common.delete",
|
|
151
|
+
"defaultText": "Delete",
|
|
152
|
+
"placeholders": []
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"key": "onboard.common.modelOptional",
|
|
156
|
+
"defaultText": "Model (optional)",
|
|
157
|
+
"placeholders": []
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"key": "onboard.common.next",
|
|
161
|
+
"defaultText": "Next",
|
|
162
|
+
"placeholders": []
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"key": "onboard.common.provider",
|
|
166
|
+
"defaultText": "Provider",
|
|
167
|
+
"placeholders": []
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"key": "onboard.common.setDefault",
|
|
171
|
+
"defaultText": "Set as default",
|
|
172
|
+
"placeholders": []
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"key": "onboard.common.skip",
|
|
176
|
+
"defaultText": "Skip",
|
|
177
|
+
"placeholders": []
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"key": "onboard.done.body",
|
|
181
|
+
"defaultText": "Welcome, {displayUserName}. Click below to enter your DeskTalk desktop.",
|
|
182
|
+
"placeholders": [
|
|
183
|
+
"displayUserName"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"key": "onboard.done.enter",
|
|
188
|
+
"defaultText": "Enter Desktop",
|
|
189
|
+
"placeholders": []
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"key": "onboard.done.loading",
|
|
193
|
+
"defaultText": "Setting up...",
|
|
194
|
+
"placeholders": []
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"key": "onboard.done.subtitle",
|
|
198
|
+
"defaultText": "Your admin account is ready",
|
|
199
|
+
"placeholders": []
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"key": "onboard.done.title",
|
|
203
|
+
"defaultText": "All Set!",
|
|
204
|
+
"placeholders": []
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"key": "onboard.voice.apiKeyPlaceholder",
|
|
208
|
+
"defaultText": "Enter your STT API key",
|
|
209
|
+
"placeholders": []
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"key": "onboard.voice.azureApiVersion",
|
|
213
|
+
"defaultText": "Azure API Version",
|
|
214
|
+
"placeholders": []
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"key": "onboard.voice.azureDeployment",
|
|
218
|
+
"defaultText": "Azure Deployment",
|
|
219
|
+
"placeholders": []
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"key": "onboard.voice.baseUrl",
|
|
223
|
+
"defaultText": "Base URL",
|
|
224
|
+
"placeholders": []
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"key": "onboard.voice.body",
|
|
228
|
+
"defaultText": "Set up a speech-to-text provider for voice input. You can change these settings later in Preferences.",
|
|
229
|
+
"placeholders": []
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"key": "onboard.voice.model",
|
|
233
|
+
"defaultText": "Model",
|
|
234
|
+
"placeholders": []
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"key": "onboard.voice.provider",
|
|
238
|
+
"defaultText": "STT Provider",
|
|
239
|
+
"placeholders": []
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"key": "onboard.voice.subtitle",
|
|
243
|
+
"defaultText": "Configure speech-to-text (optional)",
|
|
244
|
+
"placeholders": []
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"key": "onboard.voice.title",
|
|
248
|
+
"defaultText": "Voice Configuration",
|
|
249
|
+
"placeholders": []
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"key": "onboard.welcome.accentColorLabel",
|
|
253
|
+
"defaultText": "Accent Color",
|
|
254
|
+
"placeholders": []
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"key": "onboard.welcome.accentColorPicker",
|
|
258
|
+
"defaultText": "Accent color picker",
|
|
259
|
+
"placeholders": []
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"key": "onboard.welcome.body",
|
|
263
|
+
"defaultText": "DeskTalk is a browser-based desktop environment with an AI assistant and modular MiniApps. Since this is the first time running DeskTalk, you'll need to create an administrator account.",
|
|
264
|
+
"placeholders": []
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"key": "onboard.welcome.getStarted",
|
|
268
|
+
"defaultText": "Get Started",
|
|
269
|
+
"placeholders": []
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"key": "onboard.welcome.languageLabel",
|
|
273
|
+
"defaultText": "Language",
|
|
274
|
+
"placeholders": []
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"key": "onboard.welcome.subtitle",
|
|
278
|
+
"defaultText": "Choose your language and accent before creating your admin account",
|
|
279
|
+
"placeholders": []
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"key": "onboard.welcome.title",
|
|
283
|
+
"defaultText": "Welcome to DeskTalk",
|
|
284
|
+
"placeholders": []
|
|
285
|
+
},
|
|
18
286
|
{
|
|
19
287
|
"key": "split.mode",
|
|
20
288
|
"defaultText": "Split mode",
|
package/dist/i18n/zh-CN.json
CHANGED
|
@@ -2,6 +2,59 @@
|
|
|
2
2
|
"applications": "应用程序",
|
|
3
3
|
"close": "关闭",
|
|
4
4
|
"miniapp.loading": "正在加载 MiniApp...",
|
|
5
|
+
"onboard.account.confirmPassword": "确认密码",
|
|
6
|
+
"onboard.account.confirmPasswordPlaceholder": "再次输入你的密码",
|
|
7
|
+
"onboard.account.displayName": "显示名称",
|
|
8
|
+
"onboard.account.displayNamePlaceholder": "你的显示名称",
|
|
9
|
+
"onboard.account.errors.displayNameRequired": "必须填写显示名称。",
|
|
10
|
+
"onboard.account.errors.passwordMismatch": "两次输入的密码不一致。",
|
|
11
|
+
"onboard.account.errors.passwordShort": "密码至少需要 8 个字符。",
|
|
12
|
+
"onboard.account.errors.usernameInvalid": "用户名必须为 1-32 个字母、数字、连字符或下划线。",
|
|
13
|
+
"onboard.account.errors.usernameRequired": "必须填写用户名。",
|
|
14
|
+
"onboard.account.password": "密码",
|
|
15
|
+
"onboard.account.passwordPlaceholder": "至少 8 个字符",
|
|
16
|
+
"onboard.account.subtitle": "选择你的登录信息",
|
|
17
|
+
"onboard.account.title": "创建管理员账户",
|
|
18
|
+
"onboard.account.username": "用户名",
|
|
19
|
+
"onboard.account.usernamePlaceholder": "例如:admin",
|
|
20
|
+
"onboard.ai.apiKeyPlaceholder": "输入你的 API Key",
|
|
21
|
+
"onboard.ai.baseUrlPlaceholder": "自定义 API 端点",
|
|
22
|
+
"onboard.ai.body": "配置一个 AI 提供商,让 DeskTalk 助手随时可用。你之后也可以在偏好设置中修改这些选项。",
|
|
23
|
+
"onboard.ai.modelPlaceholder": "例如:gpt-4o",
|
|
24
|
+
"onboard.ai.subtitle": "配置你的 AI 提供商(可选)",
|
|
25
|
+
"onboard.ai.title": "AI 配置",
|
|
26
|
+
"onboard.common.addProvider": "添加提供商",
|
|
27
|
+
"onboard.common.apiKey": "API Key",
|
|
28
|
+
"onboard.common.back": "返回",
|
|
29
|
+
"onboard.common.baseUrlOptional": "基础 URL(可选)",
|
|
30
|
+
"onboard.common.default": "默认",
|
|
31
|
+
"onboard.common.delete": "删除",
|
|
32
|
+
"onboard.common.modelOptional": "模型(可选)",
|
|
33
|
+
"onboard.common.next": "下一步",
|
|
34
|
+
"onboard.common.provider": "提供商",
|
|
35
|
+
"onboard.common.setDefault": "设为默认",
|
|
36
|
+
"onboard.common.skip": "跳过",
|
|
37
|
+
"onboard.done.body": "欢迎,{displayUserName}。点击下方进入你的 DeskTalk 桌面。",
|
|
38
|
+
"onboard.done.enter": "进入桌面",
|
|
39
|
+
"onboard.done.loading": "正在设置...",
|
|
40
|
+
"onboard.done.subtitle": "你的管理员账户已准备完成",
|
|
41
|
+
"onboard.done.title": "全部就绪!",
|
|
42
|
+
"onboard.voice.apiKeyPlaceholder": "输入你的 STT API Key",
|
|
43
|
+
"onboard.voice.azureApiVersion": "Azure API 版本",
|
|
44
|
+
"onboard.voice.azureDeployment": "Azure 部署",
|
|
45
|
+
"onboard.voice.baseUrl": "基础 URL",
|
|
46
|
+
"onboard.voice.body": "配置一个语音转文本提供商以启用语音输入。你之后也可以在偏好设置中修改这些选项。",
|
|
47
|
+
"onboard.voice.model": "模型",
|
|
48
|
+
"onboard.voice.provider": "STT 提供商",
|
|
49
|
+
"onboard.voice.subtitle": "配置语音转文本(可选)",
|
|
50
|
+
"onboard.voice.title": "语音配置",
|
|
51
|
+
"onboard.welcome.accentColorLabel": "主题色",
|
|
52
|
+
"onboard.welcome.accentColorPicker": "主题色选择器",
|
|
53
|
+
"onboard.welcome.body": "DeskTalk 是一个基于浏览器的桌面环境,内置 AI 助手和模块化 MiniApp。首次运行时,你需要先创建一个管理员账户。",
|
|
54
|
+
"onboard.welcome.getStarted": "开始使用",
|
|
55
|
+
"onboard.welcome.languageLabel": "语言",
|
|
56
|
+
"onboard.welcome.subtitle": "在创建管理员账户前先选择语言和主题色",
|
|
57
|
+
"onboard.welcome.title": "欢迎使用 DeskTalk",
|
|
5
58
|
"window.maximize": "最大化",
|
|
6
59
|
"window.restore": "还原"
|
|
7
60
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"applications": "应用程序",
|
|
3
|
+
"close": "关闭",
|
|
4
|
+
"miniapp.loading": "正在加载 MiniApp...",
|
|
5
|
+
"onboard.account.confirmPassword": "确认密码",
|
|
6
|
+
"onboard.account.confirmPasswordPlaceholder": "再次输入你的密码",
|
|
7
|
+
"onboard.account.displayName": "显示名称",
|
|
8
|
+
"onboard.account.displayNamePlaceholder": "你的显示名称",
|
|
9
|
+
"onboard.account.errors.displayNameRequired": "必须填写显示名称。",
|
|
10
|
+
"onboard.account.errors.passwordMismatch": "两次输入的密码不一致。",
|
|
11
|
+
"onboard.account.errors.passwordShort": "密码至少需要 8 个字符。",
|
|
12
|
+
"onboard.account.errors.usernameInvalid": "用户名必须为 1-32 个字母、数字、连字符或下划线。",
|
|
13
|
+
"onboard.account.errors.usernameRequired": "必须填写用户名。",
|
|
14
|
+
"onboard.account.password": "密码",
|
|
15
|
+
"onboard.account.passwordPlaceholder": "至少 8 个字符",
|
|
16
|
+
"onboard.account.subtitle": "选择你的登录信息",
|
|
17
|
+
"onboard.account.title": "创建管理员账户",
|
|
18
|
+
"onboard.account.username": "用户名",
|
|
19
|
+
"onboard.account.usernamePlaceholder": "例如:admin",
|
|
20
|
+
"onboard.ai.apiKeyPlaceholder": "输入你的 API Key",
|
|
21
|
+
"onboard.ai.baseUrlPlaceholder": "自定义 API 端点",
|
|
22
|
+
"onboard.ai.body": "配置一个 AI 提供商,让 DeskTalk 助手随时可用。你之后也可以在偏好设置中修改这些选项。",
|
|
23
|
+
"onboard.ai.modelPlaceholder": "例如:gpt-4o",
|
|
24
|
+
"onboard.ai.subtitle": "配置你的 AI 提供商(可选)",
|
|
25
|
+
"onboard.ai.title": "AI 配置",
|
|
26
|
+
"onboard.common.addProvider": "添加提供商",
|
|
27
|
+
"onboard.common.apiKey": "API Key",
|
|
28
|
+
"onboard.common.back": "返回",
|
|
29
|
+
"onboard.common.baseUrlOptional": "基础 URL(可选)",
|
|
30
|
+
"onboard.common.default": "默认",
|
|
31
|
+
"onboard.common.delete": "删除",
|
|
32
|
+
"onboard.common.modelOptional": "模型(可选)",
|
|
33
|
+
"onboard.common.next": "下一步",
|
|
34
|
+
"onboard.common.provider": "提供商",
|
|
35
|
+
"onboard.common.setDefault": "设为默认",
|
|
36
|
+
"onboard.common.skip": "跳过",
|
|
37
|
+
"onboard.done.body": "欢迎,{displayUserName}。点击下方进入你的 DeskTalk 桌面。",
|
|
38
|
+
"onboard.done.enter": "进入桌面",
|
|
39
|
+
"onboard.done.loading": "正在设置...",
|
|
40
|
+
"onboard.done.subtitle": "你的管理员账户已准备完成",
|
|
41
|
+
"onboard.done.title": "全部就绪!",
|
|
42
|
+
"onboard.voice.apiKeyPlaceholder": "输入你的 STT API Key",
|
|
43
|
+
"onboard.voice.azureApiVersion": "Azure API 版本",
|
|
44
|
+
"onboard.voice.azureDeployment": "Azure 部署",
|
|
45
|
+
"onboard.voice.baseUrl": "基础 URL",
|
|
46
|
+
"onboard.voice.body": "配置一个语音转文本提供商以启用语音输入。你之后也可以在偏好设置中修改这些选项。",
|
|
47
|
+
"onboard.voice.model": "模型",
|
|
48
|
+
"onboard.voice.provider": "STT 提供商",
|
|
49
|
+
"onboard.voice.subtitle": "配置语音转文本(可选)",
|
|
50
|
+
"onboard.voice.title": "语音配置",
|
|
51
|
+
"onboard.welcome.accentColorLabel": "主题色",
|
|
52
|
+
"onboard.welcome.accentColorPicker": "主题色选择器",
|
|
53
|
+
"onboard.welcome.body": "DeskTalk 是一个基于浏览器的桌面环境,内置 AI 助手和模块化 MiniApp。首次运行时,你需要先创建一个管理员账户。",
|
|
54
|
+
"onboard.welcome.getStarted": "开始使用",
|
|
55
|
+
"onboard.welcome.languageLabel": "语言",
|
|
56
|
+
"onboard.welcome.subtitle": "在创建管理员账户前先选择语言和主题色",
|
|
57
|
+
"onboard.welcome.title": "欢迎使用 DeskTalk",
|
|
58
|
+
"window.maximize": "最大化",
|
|
59
|
+
"window.restore": "还原"
|
|
60
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-routes.d.ts","sourceRoot":"","sources":["../../src/server/auth-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAC/D,OAAO,iBAAiB,CAAC;AAezB,QAAA,MAAM,WAAW,qBAAqB,CAAC;AAYvC,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"auth-routes.d.ts","sourceRoot":"","sources":["../../src/server/auth-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAC/D,OAAO,iBAAiB,CAAC;AAezB,QAAA,MAAM,WAAW,qBAAqB,CAAC;AAYvC,wBAAsB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuLpE;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -118,7 +118,7 @@ export async function authRoutes(app) {
|
|
|
118
118
|
reply.code(403);
|
|
119
119
|
return { error: 'System is already set up. An admin account exists.' };
|
|
120
120
|
}
|
|
121
|
-
const { username, displayName, password, aiConfig, voiceConfig } = req.body ?? {};
|
|
121
|
+
const { username, displayName, password, language, accentColor, aiConfig, voiceConfig } = req.body ?? {};
|
|
122
122
|
if (!username || !displayName || !password) {
|
|
123
123
|
reply.code(400);
|
|
124
124
|
return { error: 'Username, displayName, and password are required.' };
|
|
@@ -139,7 +139,7 @@ export async function authRoutes(app) {
|
|
|
139
139
|
const user = createUser(username, password, 'admin', displayName);
|
|
140
140
|
ensureUserHome(username);
|
|
141
141
|
// Persist optional provider configuration from onboarding
|
|
142
|
-
saveOnboardingConfig(username, aiConfig, voiceConfig);
|
|
142
|
+
saveOnboardingConfig(username, aiConfig, voiceConfig, language, accentColor);
|
|
143
143
|
// Automatically log the admin in
|
|
144
144
|
const token = createSession(username);
|
|
145
145
|
reply.setCookie(COOKIE_NAME, token, cookieOptions(isSecure));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/server/auth-routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/server/auth-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAcvE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,cAAc;QACtB,IAAI,CAAC,EAAE,UAAU,CAAC;KACnB;CACF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,4TA6MxD"}
|
package/dist/server/index.js
CHANGED
|
@@ -18,6 +18,7 @@ import { voiceRoutes } from './voice-routes.js';
|
|
|
18
18
|
import { apiRoutes } from './api-routes.js';
|
|
19
19
|
import { dtfsRoutes } from './dtfs-routes.js';
|
|
20
20
|
import { monacoRoutes } from './monaco-routes.js';
|
|
21
|
+
import { thumbnailRoutes } from './thumbnail-routes.js';
|
|
21
22
|
const __filename = fileURLToPath(import.meta.url);
|
|
22
23
|
const __dirname = dirname(__filename);
|
|
23
24
|
const corePackageRoot = join(__dirname, '..', '..');
|
|
@@ -91,21 +92,25 @@ export async function createServer(options) {
|
|
|
91
92
|
'/api/auth/me',
|
|
92
93
|
'/api/setup/status',
|
|
93
94
|
'/api/setup',
|
|
95
|
+
'/api/i18n/catalog',
|
|
94
96
|
'/api/preferences/public',
|
|
95
97
|
'/api/ui/desktalk-theme.css',
|
|
96
98
|
]);
|
|
97
99
|
app.addHook('onRequest', async (req, reply) => {
|
|
100
|
+
const requestPath = req.url.split('?', 1)[0] ?? req.url;
|
|
98
101
|
// Skip auth for public routes
|
|
99
|
-
if (PUBLIC_ROUTES.has(
|
|
102
|
+
if (PUBLIC_ROUTES.has(requestPath))
|
|
100
103
|
return;
|
|
101
|
-
if (
|
|
104
|
+
if (requestPath.startsWith('/api/ui/') && requestPath.endsWith('.js'))
|
|
102
105
|
return;
|
|
103
|
-
if (
|
|
106
|
+
if (requestPath.startsWith('/api/ui/fonts/'))
|
|
104
107
|
return;
|
|
105
|
-
if (
|
|
108
|
+
if (requestPath.startsWith('/api/miniapps/text-edit/monaco/'))
|
|
106
109
|
return;
|
|
107
110
|
// Skip auth for static file requests (non-API, non-WS, non-dtfs)
|
|
108
|
-
if (!
|
|
111
|
+
if (!requestPath.startsWith('/api/') &&
|
|
112
|
+
!requestPath.startsWith('/ws') &&
|
|
113
|
+
!requestPath.startsWith('/@dtfs'))
|
|
109
114
|
return;
|
|
110
115
|
const token = req.cookies[COOKIE_NAME];
|
|
111
116
|
if (!token) {
|
|
@@ -141,6 +146,10 @@ export async function createServer(options) {
|
|
|
141
146
|
});
|
|
142
147
|
await app.register(monacoRoutes);
|
|
143
148
|
await app.register(dtfsRoutes);
|
|
149
|
+
await app.register(thumbnailRoutes);
|
|
150
|
+
app.get('/favicon.ico', async (_req, reply) => {
|
|
151
|
+
return reply.redirect('/logo.png');
|
|
152
|
+
});
|
|
144
153
|
app.setNotFoundHandler(async (req, reply) => {
|
|
145
154
|
if (req.url.startsWith('/api/') || req.url.startsWith('/ws')) {
|
|
146
155
|
reply.code(404);
|