fix session switch race on message send

This commit is contained in:
shiyue
2026-06-24 09:54:11 +08:00
parent 01c7fdd27a
commit 2f02270edc
4 changed files with 176 additions and 119 deletions

View File

@@ -200,8 +200,8 @@ html[data-theme='coolvibe'] .session-search-clear:focus-visible {
html[data-theme='coolvibe'] .session-project-header {
background: linear-gradient(180deg, rgba(247, 251, 252, 0.94), rgba(239, 248, 250, 0.88));
color: #5f7f87;
border-bottom: 1px solid rgba(191, 220, 228, 0.56);
border-color: rgba(156, 199, 211, 0.9);
color: #335e69;
}
html[data-theme='coolvibe'] .session-project-count {
@@ -337,8 +337,8 @@ html[data-theme='coolvibe'] .theme-card.active {
html[data-theme='editorial'] .session-project-header {
background: linear-gradient(180deg, rgba(239, 232, 220, 0.94), rgba(246, 241, 232, 0.84));
color: #7f6f61;
border-bottom: 1px solid rgba(139, 94, 60, 0.12);
border-color: rgba(139, 94, 60, 0.22);
color: #4f4035;
}
html[data-theme='editorial'] .session-project-count {
@@ -1146,15 +1146,18 @@ body.session-loading-active {
align-items: center;
justify-content: space-between;
gap: 8px;
margin: 4px 2px 5px;
padding: 6px 8px 5px;
background: rgba(242, 235, 226, 0.92);
margin: 6px 3px 6px;
padding: 6px 8px;
border: 1px solid rgba(134, 106, 80, 0.22);
border-radius: 8px;
background: rgba(255, 249, 242, 0.88);
backdrop-filter: blur(8px);
color: var(--text-muted);
font-size: 11px;
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.72), 0 1px 6px rgba(45, 31, 20, 0.04);
color: var(--text-secondary);
font-size: 12px;
font-weight: 800;
letter-spacing: 0.08em;
text-transform: uppercase;
letter-spacing: 0;
text-transform: none;
}
.session-project-name {
min-width: 0;
@@ -1162,14 +1165,15 @@ body.session-loading-active {
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
color: var(--text-primary);
}
.session-project-toggle {
min-width: 0;
flex: 1;
display: inline-flex;
align-items: center;
gap: 5px;
height: 24px;
gap: 6px;
height: 26px;
padding: 0;
border: 0;
background: transparent;
@@ -1182,9 +1186,13 @@ body.session-loading-active {
}
.session-project-toggle:hover,
.session-project-toggle:focus-visible {
color: var(--text-secondary);
color: var(--accent);
outline: none;
}
.session-project-toggle:hover .session-project-name,
.session-project-toggle:focus-visible .session-project-name {
color: var(--accent);
}
.session-project-toggle:focus-visible .session-project-name {
text-decoration: underline;
text-underline-offset: 3px;
@@ -1192,8 +1200,8 @@ body.session-loading-active {
.session-project-chevron {
width: 12px;
flex-shrink: 0;
color: var(--text-muted);
font-size: 10px;
color: currentColor;
font-size: 11px;
line-height: 1;
text-align: center;
transform: translateY(-0.5px);
@@ -1211,9 +1219,10 @@ body.session-loading-active {
min-width: 22px;
height: 18px;
padding: 0 7px;
border: 1px solid rgba(134, 106, 80, 0.14);
border-radius: 999px;
background: var(--bg-tertiary);
color: var(--text-secondary);
background: rgba(45, 31, 20, 0.06);
color: var(--text-primary);
font-size: 10px;
letter-spacing: 0;
}
@@ -1244,6 +1253,9 @@ body.session-loading-active {
.session-pinned-header {
color: var(--accent);
}
.session-pinned-header .session-project-name {
color: var(--accent);
}
.session-project-sessions[hidden] {
display: none;
}
@@ -1256,6 +1268,9 @@ body.session-loading-active {
.session-project-group.has-active-session.collapsed .session-project-header {
color: var(--accent);
}
.session-project-group.has-active-session.collapsed .session-project-name {
color: var(--accent);
}
.session-project-group.has-active-session.collapsed .session-project-count {
background: var(--accent-light);
color: var(--accent);
@@ -1460,23 +1475,24 @@ body.session-loading-active {
color: var(--danger);
}
.session-list-load-more {
width: calc(100% - 4px);
margin: 6px 2px 10px;
padding: 9px 10px;
border: 1px solid var(--border-color);
border-radius: 8px;
background: rgba(255, 249, 242, 0.72);
width: fit-content;
max-width: calc(100% - 18px);
margin: 2px 8px 6px;
padding: 3px 7px;
border: 1px solid rgba(134, 106, 80, 0.18);
border-radius: 6px;
background: transparent;
color: var(--text-secondary);
cursor: pointer;
display: flex;
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: 10px;
justify-content: flex-start;
gap: 6px;
text-align: left;
transition: background 0.16s, border-color 0.16s, color 0.16s, transform 0.16s;
}
.session-list-load-more:hover {
background: var(--bg-tertiary);
background: rgba(255, 249, 242, 0.58);
border-color: rgba(192, 85, 58, 0.24);
color: var(--accent);
transform: translateY(-1px);
@@ -1487,13 +1503,13 @@ body.session-loading-active {
}
.session-list-load-more-title {
min-width: 0;
font-size: 13px;
font-size: 12px;
font-weight: 700;
}
.session-list-load-more-meta {
flex-shrink: 0;
color: var(--text-muted);
font-size: 11px;
font-size: 10px;
}
/* Inline edit in sidebar */
.session-item-edit-input {