新增: AI 助手 Markdown 渲染+打字机流式+桌面 Rust 代理修复 CORS

This commit is contained in:
lxy
2026-08-24 02:13:15 +08:00
parent 7f08f654d9
commit db3b2c24b7
8 changed files with 463 additions and 167 deletions
+35 -4
View File
@@ -73,6 +73,31 @@
.msg .bubble .stream-text { white-space: pre-wrap; }
/* Markdown 正文排版(marked 渲染后的气泡内容) */
.msg .bubble .md-body > *:first-child { margin-top: 0; }
.msg .bubble .md-body > *:last-child { margin-bottom: 0; }
.msg .bubble .md-body p { margin: 6px 0; }
.msg .bubble .md-body h1, .msg .bubble .md-body h2, .msg .bubble .md-body h3,
.msg .bubble .md-body h4 { margin: 10px 0 6px; font-size: 14px; font-weight: 600; }
.msg .bubble .md-body h1 { font-size: 16px; }
.msg .bubble .md-body h2 { font-size: 15px; }
.msg .bubble .md-body ul, .msg .bubble .md-body ol { margin: 6px 0; padding-left: 1.4em; }
.msg .bubble .md-body li { margin: 3px 0; }
.msg .bubble .md-body strong { font-weight: 600; }
.msg .bubble .md-body code {
font-family: 'Consolas','Monaco','Courier New',monospace;
font-size: 12px; padding: 1px 5px; border-radius: 4px;
background: rgba(15,23,42,.08);
}
.msg.user .md-body code { background: rgba(255,255,255,.2); }
.msg .bubble .md-body blockquote {
margin: 6px 0; padding: 2px 10px; border-left: 3px solid var(--ui-border);
color: var(--ui-muted);
}
.msg .bubble .md-body table { border-collapse: collapse; margin: 6px 0; font-size: 12px; }
.msg .bubble .md-body th, .msg .bubble .md-body td { border: 1px solid var(--ui-border); padding: 4px 8px; }
.msg .bubble .md-body hr { border: none; border-top: 1px solid var(--ui-border); margin: 8px 0; }
/* 消息中的代码块 */
.msg .msg-code {
margin: 6px 0; padding: 10px 12px;
@@ -89,12 +114,18 @@
.msg .msg-code .jn { color: #d97706; } /* number */
.msg .msg-code .jb { color: #e11d48; font-weight: 600; } /* boolean/null */
/* 流式打字机光标(参考 devflow:细竖线 + 柔和步进闪烁) */
.cursor {
display: inline-block; width: 7px; height: 1em;
background: currentColor; vertical-align: -2px; margin-left: 2px;
animation: blink 1s steps(2, start) infinite;
display: inline-block;
width: 2px; height: 14px;
background: var(--ui-primary, #4f46e5);
margin-left: 2px; vertical-align: text-bottom;
animation: blink 0.8s step-end infinite;
}
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
@keyframes blink { 50% { opacity: 0; } }
/* 输入栏 */
.chat-input-bar {