feat: prepare 2.2.0 with UI and execution fixes

Add dark theme, richer Markdown and readable plugin results.
Improve Android input evidence, response integrity and diagnostics.
Unify lifecycle, guidance receipts and evidence sources across clients.
Keep direct action dispatch without an added AI quota approval layer.
Align version metadata at 2.2.0 and bundle Helper 1.2.2.

Validation: 3063 backend tests before the version bump; 44 after.
Frontend: 317 tests and production build passed.
This commit is contained in:
chenmingxuan committed 2026-10-26 00:44:13 +08:00
1 parent 83bcfd54d5
commit fac4ccb760
146 files changed
+5689 -2033

No files matched your search

@@ -15,9 +15,9 @@
*/
$border-color: rgba(0, 0, 0, 0.08);
$text-primary: #1f1f1f;
$text-secondary: #71717a;
$text-muted: #a1a1aa;
$text-primary: var(--app-text-strong, #1f1f1f);
$text-secondary: var(--app-text-muted, #71717a);
$text-muted: var(--app-text-faint, #a1a1aa);
:host {
display: flex;
@@ -32,7 +32,7 @@ $text-muted: #a1a1aa;
display: flex;
flex-direction: column;
height: 100%;
background: #ffffff;
background: var(--app-surface, #ffffff);
box-sizing: border-box;
.chat-header {
@@ -43,23 +43,23 @@ $text-muted: #a1a1aa;
height: 60px;
padding: 0 20px;
border-bottom: 1px solid $border-color;
background: #ffffff;
background: var(--app-surface, #ffffff);
box-sizing: border-box;
.tab-selector-bar {
display: flex;
height: 36px;
box-sizing: border-box;
background: rgba(241, 245, 249, 0.72);
background: rgb(var(--app-surface-soft-rgb, 241 245 249) / 0.72);
backdrop-filter: blur(16px) saturate(180%);
-webkit-backdrop-filter: blur(16px) saturate(180%);
border: 1px solid rgba(226, 232, 240, 0.85);
border: 1px solid rgb(var(--app-border-rgb, 226 232 240) / 0.85);
border-radius: 18px;
padding: 3px;
gap: 3px;
align-items: center;
flex-shrink: 0;
box-shadow: 0 2px 8px -1px rgba(15, 23, 42, 0.04), inset 0 1px 1px rgba(255, 255, 255, 0.8);
box-shadow: 0 2px 8px -1px rgba(15, 23, 42, 0.04), inset 0 1px 1px rgb(var(--app-highlight-rgb, 255 255 255) / 0.8);
.tab-selector-btn {
display: inline-flex;
@@ -74,7 +74,7 @@ $text-muted: #a1a1aa;
border-radius: 15px;
font-size: 13px;
font-weight: 600;
color: #64748b;
color: var(--app-text-muted, #64748b);
cursor: pointer;
line-height: 1;
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
@@ -90,13 +90,13 @@ $text-muted: #a1a1aa;
}
&:hover:not(.active) {
color: #0f172a;
background: rgba(255, 255, 255, 0.7);
color: var(--app-text-strong, #0f172a);
background: rgb(var(--app-surface-rgb, 255 255 255) / 0.7);
}
&.active {
background: #ffffff;
color: #2563eb;
background: var(--app-surface, #ffffff);
color: var(--app-primary-text, #2563eb);
font-weight: 700;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.02);
}
@@ -116,7 +116,7 @@ $text-muted: #a1a1aa;
background: linear-gradient(135deg, rgba(37, 99, 235, 0.92), rgba(26, 115, 232, 0.85));
backdrop-filter: blur(14px) saturate(180%);
-webkit-backdrop-filter: blur(14px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.35);
border: 1px solid rgb(var(--app-border-rgb, 255 255 255) / 0.35);
border-radius: 16px;
font-size: 13.5px;
font-weight: 600;
@@ -127,7 +127,7 @@ $text-muted: #a1a1aa;
gap: 5px;
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
margin-right: 8px;
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.3), inset 0 1px 1px rgba(255, 255, 255, 0.45);
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.3), inset 0 1px 1px rgb(var(--app-highlight-rgb, 255 255 255) / 0.45);
.material-symbols-outlined {
font-size: 16px;
@@ -136,8 +136,8 @@ $text-muted: #a1a1aa;
&:hover {
background: linear-gradient(135deg, rgba(37, 99, 235, 1), rgba(26, 115, 232, 0.95));
border-color: rgba(255, 255, 255, 0.6);
box-shadow: 0 6px 18px rgba(37, 99, 235, 0.42), inset 0 1px 1px rgba(255, 255, 255, 0.6);
border-color: rgb(var(--app-border-rgb, 255 255 255) / 0.6);
box-shadow: 0 6px 18px rgba(37, 99, 235, 0.42), inset 0 1px 1px rgb(var(--app-highlight-rgb, 255 255 255) / 0.6);
transform: translateY(-0.5px);
}
@@ -151,17 +151,17 @@ $text-muted: #a1a1aa;
height: 32px;
padding: 0;
box-sizing: border-box;
background: rgba(255, 255, 255, 0.72);
background: rgb(var(--app-surface-rgb, 255 255 255) / 0.72);
backdrop-filter: blur(16px) saturate(180%);
-webkit-backdrop-filter: blur(16px) saturate(180%);
border: 1px solid rgba(203, 213, 225, 0.85);
border: 1px solid rgb(var(--app-border-control-rgb, 203 213 225) / 0.85);
border-radius: 50%;
color: #64748b;
color: var(--app-text-muted, #64748b);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 6px -1px rgba(15, 23, 42, 0.04), inset 0 1px 1px rgba(255, 255, 255, 0.9);
box-shadow: 0 2px 6px -1px rgba(15, 23, 42, 0.04), inset 0 1px 1px rgb(var(--app-highlight-rgb, 255 255 255) / 0.9);
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
.material-symbols-outlined {
@@ -170,9 +170,9 @@ $text-muted: #a1a1aa;
}
&:hover:not(:disabled) {
background: #fef2f2;
color: #ef4444;
border-color: #fca5a5;
background: var(--app-error-soft, #fef2f2);
color: var(--app-error-text, #ef4444);
border-color: var(--app-error-border, #fca5a5);
box-shadow: 0 3px 10px rgba(239, 68, 68, 0.15);
transform: scale(1.05);
}
@@ -192,7 +192,7 @@ $text-muted: #a1a1aa;
display: flex;
flex-direction: column;
gap: 8px;
background: #ffffff;
background: var(--app-surface, #ffffff);
&::-webkit-scrollbar {
width: 5px;
@@ -205,7 +205,7 @@ $text-muted: #a1a1aa;
.queue-section-header {
font-size: 11.5px;
font-weight: 700;
color: #475569;
color: var(--app-text-secondary, #475569);
margin: 6px 0 2px;
display: flex;
align-items: center;
@@ -221,18 +221,18 @@ $text-muted: #a1a1aa;
display: flex;
align-items: center;
justify-content: center;
background: #f1f5f9;
border: 1px dashed #cbd5e1;
background: var(--app-surface-soft, #f1f5f9);
border: 1px dashed var(--app-border-control, #cbd5e1);
border-radius: 8px;
padding: 12px;
color: #64748b;
color: var(--app-text-muted, #64748b);
font-size: 12px;
text-align: center;
}
.history-section {
margin-top: 12px;
border-top: 1px solid rgba(226, 232, 240, 0.8);
border-top: 1px solid rgb(var(--app-border-rgb, 226 232 240) / 0.8);
padding-top: 12px;
&[open] .history-summary {
@@ -242,7 +242,7 @@ $text-muted: #a1a1aa;
.history-summary {
font-size: 11.5px;
font-weight: 700;
color: #475569;
color: var(--app-text-secondary, #475569);
cursor: pointer;
outline: none;
user-select: none;
@@ -265,8 +265,8 @@ $text-muted: #a1a1aa;
}
&:hover {
background: #f1f5f9;
color: #1e293b;
background: var(--app-surface-soft, #f1f5f9);
color: var(--app-text-control, #1e293b);
}
}
@@ -278,8 +278,8 @@ $text-muted: #a1a1aa;
}
.task-card {
background: #ffffff;
border: 1px solid rgba(226, 232, 240, 0.8);
background: var(--app-surface, #ffffff);
border: 1px solid rgb(var(--app-border-rgb, 226 232 240) / 0.8);
border-radius: 10px;
padding: 10px 12px;
display: flex;
@@ -292,7 +292,7 @@ $text-muted: #a1a1aa;
&:hover {
transform: translateY(-1px);
border-color: rgba(203, 213, 225, 1);
border-color: rgb(var(--app-border-control-rgb, 203 213 225) / 1);
box-shadow: 0 3px 8px rgba(148, 163, 184, 0.08);
.task-card-header .task-card-header-actions {
@@ -314,7 +314,7 @@ $text-muted: #a1a1aa;
&.selected {
border-color: #3b82f6;
box-shadow: 0 0 0 1px #3b82f6, 0 4px 12px rgba(59, 130, 246, 0.08);
background: #ffffff;
background: var(--app-surface, #ffffff);
}
&.running {
@@ -336,7 +336,7 @@ $text-muted: #a1a1aa;
min-width: 0;
.task-status-group { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.task-origin-badge { display: inline-flex; align-items: center; box-sizing: border-box; height: 20px; padding: 0 6px; border: 1px solid #e2e8f0; border-radius: 5px; background: #f8fafc; color: #64748b; font-size: 11px; line-height: 14px; white-space: nowrap; }
.task-origin-badge { display: inline-flex; align-items: center; box-sizing: border-box; height: 20px; padding: 0 6px; border: 1px solid var(--app-border, #e2e8f0); border-radius: 5px; background: var(--app-surface-soft, #f8fafc); color: var(--app-text-muted, #64748b); font-size: 11px; line-height: 14px; white-space: nowrap; }
.task-badge {
flex-shrink: 0;
@@ -350,9 +350,9 @@ $text-muted: #a1a1aa;
padding: 0 5px;
border-radius: 4px;
letter-spacing: 0.05em;
border: 1px solid #e2e8f0;
background: #fafafa;
color: #64748b;
border: 1px solid var(--app-border, #e2e8f0);
background: var(--app-surface-soft, #fafafa);
color: var(--app-text-muted, #64748b);
&::before {
content: '';
@@ -364,48 +364,48 @@ $text-muted: #a1a1aa;
}
&.running {
background: #fafafa;
color: #1f1f1f;
border-color: #1f1f1f;
background: var(--app-surface-soft, #fafafa);
color: var(--app-text-strong, #1f1f1f);
border-color: var(--app-border-control, #1f1f1f);
&::before {
background-color: #1f1f1f;
animation: pulse-black-dot-small 1.5s infinite ease-in-out;
}
}
&.paused {
background: #fff7ed;
color: #c2410c;
border-color: #fdba74;
background: var(--app-warning-soft, #fff7ed);
color: var(--app-warning-text, #c2410c);
border-color: var(--app-warning-border, #fdba74);
&::before { background-color: #f97316; }
}
&.completed {
background: #fafafa;
color: #1f1f1f;
border-color: #e2e8f0;
background: var(--app-surface-soft, #fafafa);
color: var(--app-text-strong, #1f1f1f);
border-color: var(--app-border, #e2e8f0);
&::before {
background-color: #1f1f1f;
}
}
&.pending {
background: #fafafa;
color: #64748b;
border-color: #e2e8f0;
background: var(--app-surface-soft, #fafafa);
color: var(--app-text-muted, #64748b);
border-color: var(--app-border, #e2e8f0);
&::before {
background-color: #94a3b8;
}
}
&.failed {
background: #fafafa;
color: #ef4444;
border-color: #fee2e2;
background: var(--app-surface-soft, #fafafa);
color: var(--app-error-text, #ef4444);
border-color: var(--app-error-border, #fee2e2);
&::before {
background-color: #ef4444;
}
}
&.cancelled {
background: #fafafa;
color: #d97706;
border-color: #fef3c7;
background: var(--app-surface-soft, #fafafa);
color: var(--app-warning-text, #d97706);
border-color: var(--app-warning-border, #fef3c7);
&::before {
background-color: #f59e0b;
}
@@ -433,7 +433,7 @@ $text-muted: #a1a1aa;
min-width: 0;
flex-shrink: 1;
font-size: 11px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
line-height: 1;
cursor: default;
transition: color 0.15s ease, opacity 0.15s ease;
@@ -443,7 +443,7 @@ $text-muted: #a1a1aa;
width: 12.5px;
height: 12.5px;
line-height: 12.5px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
opacity: 0.75;
flex-shrink: 0;
}
@@ -458,9 +458,9 @@ $text-muted: #a1a1aa;
}
&:hover {
color: #64748b;
color: var(--app-text-muted, #64748b);
.device-icon {
color: #64748b;
color: var(--app-text-muted, #64748b);
opacity: 1;
}
}
@@ -477,7 +477,7 @@ $text-muted: #a1a1aa;
.task-time {
font-size: 11.5px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
white-space: nowrap;
flex-shrink: 0;
line-height: 1;
@@ -495,7 +495,7 @@ $text-muted: #a1a1aa;
border: none;
background: transparent;
border-radius: 4px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
cursor: pointer;
display: inline-flex;
align-items: center;
@@ -510,8 +510,8 @@ $text-muted: #a1a1aa;
}
&:hover:not(:disabled) {
color: #ef4444;
background: #fee2e2;
color: var(--app-error-text, #ef4444);
background: var(--app-error-soft, #fee2e2);
}
&:disabled {
@@ -531,7 +531,7 @@ $text-muted: #a1a1aa;
border: none;
background: transparent;
border-radius: 4px;
color: #ef4444;
color: var(--app-error-text, #ef4444);
cursor: pointer;
display: inline-flex;
align-items: center;
@@ -546,8 +546,8 @@ $text-muted: #a1a1aa;
}
&:hover:not(:disabled) {
color: #dc2626;
background: #fee2e2;
color: var(--app-error-text, #dc2626);
background: var(--app-error-soft, #fee2e2);
transform: translateY(-50%) scale(1.1);
}
@@ -572,7 +572,7 @@ $text-muted: #a1a1aa;
.task-goal {
font-size: 12.5px;
font-weight: 500;
color: #1e293b;
color: var(--app-text-control, #1e293b);
line-height: 1.4;
word-break: break-word;
display: -webkit-box;
@@ -587,15 +587,15 @@ $text-muted: #a1a1aa;
justify-content: space-between;
align-items: center;
gap: 12px;
border-top: 1px solid rgba(241, 245, 249, 0.8);
border-top: 1px solid rgb(var(--app-border-rgb, 241 245 249) / 0.8);
padding-top: 6px;
font-size: 11.5px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
.task-id {
font-family: 'Fira Code', 'Roboto Mono', Consolas, monospace;
font-size: 11px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -604,14 +604,14 @@ $text-muted: #a1a1aa;
transition: color 0.15s ease;
&:hover {
color: #475569;
color: var(--app-text-secondary, #475569);
}
}
.task-date {
flex-shrink: 0;
font-size: 11px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
}
}
}
@@ -635,7 +635,7 @@ $text-muted: #a1a1aa;
.selector-title {
font-size: 11px;
font-weight: 700;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
letter-spacing: 0.05em;
}
@@ -649,12 +649,12 @@ $text-muted: #a1a1aa;
align-items: center;
gap: 6px;
padding: 6px 12px;
border: 1px solid #e2e8f0;
background: #ffffff;
border: 1px solid var(--app-border, #e2e8f0);
background: var(--app-surface, #ffffff);
border-radius: 20px;
font-size: 13px;
font-weight: 500;
color: #475569;
color: var(--app-text-secondary, #475569);
cursor: pointer;
transition: all 0.15s ease;
@@ -663,15 +663,15 @@ $text-muted: #a1a1aa;
}
&:hover {
background: #f8fafc;
border-color: #cbd5e1;
color: #1e293b;
background: var(--app-surface-soft, #f8fafc);
border-color: var(--app-border-control, #cbd5e1);
color: var(--app-text-control, #1e293b);
}
&.active {
background: #eff6ff;
border-color: #bfdbfe;
color: #1d4ed8;
background: var(--app-primary-soft, #eff6ff);
border-color: var(--app-primary-border, #bfdbfe);
color: var(--app-primary-text, #1d4ed8);
font-weight: 600;
}
}
@@ -694,8 +694,8 @@ $text-muted: #a1a1aa;
width: 52px;
height: 52px;
border-radius: 50%;
background: #f1f5f9;
border: 1px solid #e2e8f0;
background: var(--app-surface-soft, #f1f5f9);
border: 1px solid var(--app-border, #e2e8f0);
display: flex;
align-items: center;
justify-content: center;
@@ -704,7 +704,7 @@ $text-muted: #a1a1aa;
.material-symbols-outlined {
font-size: 26px;
color: #94a3b8;
color: var(--app-text-faint, #94a3b8);
}
}
@@ -712,14 +712,14 @@ $text-muted: #a1a1aa;
font-family: 'Google Sans', 'Google Sans Text', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
font-size: 14px;
font-weight: 600;
color: #1e293b;
color: var(--app-text-control, #1e293b);
margin: 0 0 6px 0;
}
.empty-notes-subtitle {
font-family: 'Google Sans', 'Google Sans Text', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
font-size: 12.5px;
color: #64748b;
color: var(--app-text-muted, #64748b);
line-height: 1.5;
max-width: 240px;
margin: 0;
@@ -736,7 +736,7 @@ $text-muted: #a1a1aa;
.note-title {
font-size: 14px;
font-weight: 700;
color: #1f1f1f;
color: var(--app-text-strong, #1f1f1f);
margin-top: 0;
margin-bottom: 20px;
font-family: 'Google Sans', 'Google Sans Text', 'Inter', sans-serif;
@@ -744,8 +744,8 @@ $text-muted: #a1a1aa;
.code-segment {
font-family: 'Fira Code', 'Roboto Mono', Consolas, monospace;
background-color: #f1f3f4;
color: #1967d2;
background-color: var(--app-info-soft, #f1f3f4);
color: var(--app-primary-text, #1967d2);
padding: 2px 6px;
border-radius: 4px;
font-size: 14px;
@@ -756,8 +756,8 @@ $text-muted: #a1a1aa;
.checked {
.code-segment {
color: #a1a1aa;
background-color: #f8f9fa;
color: var(--app-text-faint, #a1a1aa);
background-color: var(--app-surface-soft, #f8f9fa);
}
}
@@ -778,7 +778,7 @@ $text-muted: #a1a1aa;
opacity: 0.7;
}
.milestone-text {
color: #a1a1aa;
color: var(--app-text-faint, #a1a1aa);
}
}
}
@@ -795,11 +795,11 @@ $text-muted: #a1a1aa;
font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
&.checked {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
}
&.progress {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
}
&.unchecked {
@@ -809,7 +809,7 @@ $text-muted: #a1a1aa;
.milestone-text {
font-family: 'Google Sans', 'Google Sans Text', 'Inter', sans-serif;
color: #1f1f1f;
color: var(--app-text-strong, #1f1f1f);
font-size: 14px;
line-height: 1.8;
font-weight: 400;
@@ -839,7 +839,7 @@ $text-muted: #a1a1aa;
align-items: flex-start;
gap: 10px;
font-family: 'Google Sans', 'Google Sans Text', 'Inter', sans-serif;
color: #1f1f1f;
color: var(--app-text-strong, #1f1f1f);
font-size: 14px;
line-height: 1.8;
@@ -848,7 +848,7 @@ $text-muted: #a1a1aa;
}
&.checked {
color: #a1a1aa;
color: var(--app-text-faint, #a1a1aa);
.check-icon.checked {
opacity: 0.7;
@@ -862,11 +862,11 @@ $text-muted: #a1a1aa;
font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
&.checked {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
}
&.progress {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
}
&.unchecked {
@@ -875,7 +875,7 @@ $text-muted: #a1a1aa;
}
.bullet {
color: #9ca3af;
color: var(--app-text-faint, #9ca3af);
font-weight: bold;
user-select: none;
padding-left: 2px;
@@ -907,8 +907,8 @@ $text-muted: #a1a1aa;
}
.verification-card {
background: #f8fafc;
border: 1px solid #e2e8f0;
background: var(--app-surface-soft, #f8fafc);
border: 1px solid var(--app-border, #e2e8f0);
border-radius: 6px;
padding: 8px 12px;
display: flex;
@@ -931,10 +931,10 @@ $text-muted: #a1a1aa;
line-height: 1;
letter-spacing: 0.6px;
text-transform: uppercase;
color: #64748b;
color: var(--app-text-muted, #64748b);
&.assert {
color: #0284c7;
color: var(--app-info-text, #0284c7);
}
}
}
@@ -943,35 +943,35 @@ $text-muted: #a1a1aa;
font-family: inherit;
font-size: 13.5px;
line-height: 1.6;
color: #334155;
color: var(--app-text-control, #334155);
word-break: break-word;
.bold-segment {
font-weight: 600;
color: #1e293b;
color: var(--app-text-control, #1e293b);
}
.code-segment {
font-family: 'Fira Code', 'Roboto Mono', Consolas, monospace;
font-size: 12px;
background: #f1f5f9;
color: #0f172a;
background: var(--app-surface-soft, #f1f5f9);
color: var(--app-text-strong, #0f172a);
padding: 1.5px 6px;
border-radius: 4px;
border: 1px solid #e2e8f0;
border: 1px solid var(--app-border, #e2e8f0);
}
}
&.finding {
background: #fffbeb;
border-color: #fef3c7;
background: var(--app-warning-soft, #fffbeb);
border-color: var(--app-warning-border, #fef3c7);
.card-header .card-tag {
color: #b45309;
color: var(--app-warning-text, #b45309);
}
.card-body {
color: #92400e;
color: var(--app-warning-text, #92400e);
}
}
}
@@ -988,7 +988,7 @@ $text-muted: #a1a1aa;
margin-bottom: 14px;
min-height: 22px;
font-family: 'Google Sans', 'Google Sans Text', 'Inter', sans-serif;
color: #1f1f1f;
color: var(--app-text-strong, #1f1f1f);
font-size: 14px;
line-height: 1.6;
@@ -1001,7 +1001,7 @@ $text-muted: #a1a1aa;
font-weight: 700;
margin-top: 24px;
margin-bottom: 12px;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--app-border, #e5e7eb);
padding-bottom: 6px;
}
@@ -1020,17 +1020,17 @@ $text-muted: #a1a1aa;
}
&.checked {
color: #a1a1aa;
color: var(--app-text-faint, #a1a1aa);
.check-icon {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
opacity: 0.7;
}
}
&.progress {
.check-icon {
color: #1a73e8;
color: var(--app-primary-text, #1a73e8);
}
}
@@ -1042,7 +1042,7 @@ $text-muted: #a1a1aa;
&.list-item {
.bullet {
color: #9ca3af;
color: var(--app-text-faint, #9ca3af);
font-weight: bold;
user-select: none;
}