fix(hub): sick trade rows use red text only, widen AI history

Remove red background on 犯病 archive rows; fix AI markdown ordered lists; widen chat history sidebar.
This commit is contained in:
dekun
2026-06-11 18:01:52 +08:00
parent 2388ecc882
commit 5f79a62b13
3 changed files with 73 additions and 17 deletions
+27 -13
View File
@@ -4321,11 +4321,19 @@ body.hub-page-ai #page-ai {
.ai-result-md ul,
.ai-result-md ol {
margin: 6px 0 8px 1.25em;
padding: 0;
padding: 0 0 0 0.25em;
list-style-position: outside;
}
.ai-result-md ul {
list-style-type: disc;
}
.ai-result-md ol {
list-style-type: decimal;
}
.ai-result-md li {
margin: 5px 0;
line-height: 1.5;
display: list-item;
}
.ai-result-md strong {
color: var(--text);
@@ -4413,6 +4421,17 @@ body.hub-page-ai #page-ai {
.ai-bubble-assistant.ai-result-md ul,
.ai-bubble-assistant.ai-result-md ol {
margin: 4px 0 6px 1.15em;
padding-left: 0.25em;
list-style-position: outside;
}
.ai-bubble-assistant.ai-result-md ul {
list-style-type: disc;
}
.ai-bubble-assistant.ai-result-md ol {
list-style-type: decimal;
}
.ai-bubble-assistant.ai-result-md li {
display: list-item;
}
.ai-ac-table-wrap {
margin: 8px 0 12px;
@@ -4541,7 +4560,7 @@ body.hub-page-ai #page-ai {
flex: 1 1 auto;
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
grid-template-columns: minmax(0, 1fr) minmax(360px, 440px);
gap: 0;
overflow: hidden;
border: 1px solid var(--border-soft);
@@ -5700,25 +5719,20 @@ body.funds-fullscreen-open {
.archive-trade-row.is-active {
background: var(--inset-surface);
}
.archive-trade-row.archive-trade-sick {
background: rgba(220, 38, 38, 0.3);
.archive-trade-row.archive-trade-sick td {
color: var(--red);
}
.archive-trade-row.archive-trade-sick.is-active {
background: rgba(220, 38, 38, 0.38);
}
.archive-trade-row.archive-trade-sick td {
color: var(--accent);
border-bottom-color: rgba(220, 38, 38, 0.4);
background: var(--inset-surface);
}
.archive-trade-row.archive-trade-sick .archive-tag-select,
.archive-trade-row.archive-trade-sick .archive-note-input {
color: var(--accent);
background: rgba(0, 0, 0, 0.2);
border-color: color-mix(in srgb, var(--accent) 50%, var(--border-soft));
color: var(--red);
border-color: color-mix(in srgb, var(--red) 40%, var(--border-soft));
}
.archive-trade-row.archive-trade-sick td.pos,
.archive-trade-row.archive-trade-sick td.neg {
color: var(--accent);
color: var(--red);
}
.archive-actions-cell {
white-space: nowrap;
+2 -2
View File
@@ -15,7 +15,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'" />
<noscript><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" /></noscript>
<link rel="stylesheet" href="/assets/app.css?v=20260612-inner-light-fix" />
<link rel="stylesheet" href="/assets/app.css?v=20260612-sick-row-red-text" />
<link rel="stylesheet" href="/assets/dashboard.css?v=20260612-dash-monitor-count" />
</head>
<body>
@@ -576,7 +576,7 @@
<script src="/assets/archive.js?v=20260612-inner-light-fix"></script>
<script src="/assets/funds.js?v=20260609-hub-funds-fold"></script>
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
<script src="/assets/ai_review_render.js?v=2"></script>
<script src="/assets/ai_review_render.js?v=3"></script>
<script src="/assets/app.js?v=20260612-monitor-desktop-layout"></script>
</body>
</html>
+44 -2
View File
@@ -46,8 +46,40 @@
return out;
}
function isNumberedListLine(trimmed) {
if (!trimmed) return false;
if (/^\d+\.\s+/.test(trimmed)) return true;
if (/^\*\*\d+\.\s*.+\*\*$/.test(trimmed)) return true;
return false;
}
/** 编号列表项之间的空行不拆段,避免每条都从 1 重新开始 */
function preprocessListBlanks(text) {
var lines = String(text || "").replace(/\r\n/g, "\n").split("\n");
var out = [];
for (var i = 0; i < lines.length; i++) {
var trimmed = lines[i].trim();
if (!trimmed) {
var prevTrim = out.length ? String(out[out.length - 1]).trim() : "";
var nextTrim = "";
for (var j = i + 1; j < lines.length; j++) {
var t = lines[j].trim();
if (t) {
nextTrim = t;
break;
}
}
if (isNumberedListLine(prevTrim) && isNumberedListLine(nextTrim)) {
continue;
}
}
out.push(lines[i]);
}
return out.join("\n");
}
function renderMarkdown(text) {
var src = enhanceReviewHeadings(text);
var src = enhanceReviewHeadings(preprocessListBlanks(text));
var lines = src.replace(/\r\n/g, "\n").split("\n");
var html = [];
var inUl = false;
@@ -88,8 +120,18 @@
html.push("<li>" + parseInline(ulm[1]) + "</li>");
return;
}
var boldOl = trimmed.match(/^\*\*(\d+)\.\s*(.+)\*\*$/);
if (boldOl) {
if (!inOl) {
closeLists();
html.push("<ol>");
inOl = true;
}
html.push("<li>" + parseInline(trimmed) + "</li>");
return;
}
var olm = trimmed.match(/^\d+\.\s+(.+)$/);
if (olm && !/^\*\*/.test(trimmed)) {
if (olm) {
if (!inOl) {
closeLists();
html.push("<ol>");