feat(web): refine AI sessions and task filtering

This commit is contained in:
2026-07-22 16:26:05 +08:00
parent 5d2f45ad83
commit b28a5d635c
9 changed files with 484 additions and 122 deletions

View File

@@ -1529,15 +1529,30 @@
}
}
.project-ai-page {
position: relative;
min-height: 0;
}
.agent-chat-shell {
min-height: calc(100vh - 170px);
height: calc(100vh - 90px);
min-height: 620px;
display: grid;
grid-template-columns: 280px minmax(0, 1fr);
grid-template-columns: 248px minmax(0, 1fr);
gap: 0;
margin: -12px -16px -16px;
margin: -16px;
background: var(--senlin-panel);
}
.agent-request-error {
position: absolute;
z-index: 8;
top: 12px;
left: 50%;
width: min(560px, calc(100% - 48px));
transform: translateX(-50%);
}
.agent-session-list.queue-section.arco-card,
.agent-chat-panel.queue-section.arco-card {
border-top: 0;
@@ -1556,20 +1571,20 @@
height: 100%;
display: flex;
flex-direction: column;
gap: 28px;
padding: 18px 20px;
gap: 22px;
padding: 18px 14px;
}
.agent-new-chat.arco-btn {
height: 42px;
justify-content: center;
border: 1px solid var(--senlin-border);
border-radius: 999px;
background: var(--senlin-panel);
color: var(--senlin-text);
height: 40px;
justify-content: flex-start;
border: 1px solid color-mix(in srgb, var(--senlin-primary) 26%, var(--senlin-border));
border-radius: 10px;
background: color-mix(in srgb, var(--senlin-primary) 8%, var(--senlin-panel));
color: var(--senlin-primary);
font-size: 14px;
font-weight: 600;
box-shadow: 0 4px 14px rgba(29, 33, 41, 0.08);
box-shadow: none;
}
.agent-new-chat .arco-icon {
@@ -1578,7 +1593,7 @@
.agent-session-groups {
display: grid;
gap: 28px;
gap: 20px;
overflow: auto;
scrollbar-width: none;
}
@@ -1589,66 +1604,152 @@
.agent-session-group {
display: grid;
gap: 12px;
gap: 5px;
}
.agent-session-group > .arco-typography {
font-size: 14px;
margin: 0 8px 5px;
font-size: 12px;
}
.agent-session {
width: 100%;
min-width: 0;
overflow: hidden;
display: flex;
align-items: center;
gap: 8px;
border: 0;
border-radius: 6px;
border-radius: 8px;
background: transparent;
color: var(--senlin-text);
padding: 5px 0;
padding: 9px 10px;
text-align: left;
cursor: pointer;
font-size: 13px;
line-height: 1.45;
}
.agent-session span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
font-size: 14px;
line-height: 1.45;
}
.agent-session .arco-icon {
flex: 0 0 auto;
color: var(--senlin-muted);
}
.agent-session:hover,
.agent-session.active {
background: color-mix(in srgb, var(--senlin-primary) 8%, var(--senlin-panel));
color: var(--senlin-primary);
}
.agent-session-empty {
margin-top: 56px;
}
.agent-chat-panel.queue-section .arco-card-body {
position: relative;
min-height: calc(100vh - 170px);
height: 100%;
min-height: 620px;
display: grid;
grid-template-rows: minmax(0, 1fr) auto;
padding: 0;
}
.agent-chat-main {
display: grid;
place-items: center;
padding: 80px 32px 190px;
min-height: 0;
overflow-y: auto;
display: flex;
justify-content: center;
padding: 52px 32px 34px;
scrollbar-width: thin;
}
.agent-chat-main h2 {
.agent-empty-state {
align-self: center;
display: grid;
justify-items: center;
gap: 14px;
color: var(--senlin-muted);
}
.agent-empty-icon {
width: 58px;
height: 58px;
display: grid;
place-items: center;
border-radius: 18px;
background: var(--senlin-soft-blue);
color: var(--senlin-primary);
font-size: 28px;
}
.agent-thread {
width: min(780px, 100%);
display: grid;
align-content: start;
gap: 34px;
}
.agent-user-message {
max-width: 78%;
justify-self: end;
border-radius: 18px 18px 4px 18px;
background: var(--senlin-soft-blue);
color: var(--senlin-text);
padding: 12px 16px;
font-size: 14px;
line-height: 1.7;
white-space: pre-wrap;
}
.agent-assistant-message {
display: grid;
grid-template-columns: 32px minmax(0, 1fr);
align-items: start;
gap: 12px;
}
.agent-assistant-avatar {
width: 32px;
height: 32px;
display: grid;
place-items: center;
border-radius: 10px;
background: var(--senlin-primary);
color: #fff;
}
.agent-assistant-name {
display: block;
margin-bottom: 7px;
color: var(--senlin-text);
font-weight: 700;
}
.agent-assistant-message p {
margin: 0;
color: var(--senlin-text);
font-size: 24px;
font-weight: 800;
font-size: 14px;
line-height: 1.75;
}
.agent-composer {
width: min(860px, calc(100% - 80px));
width: min(780px, calc(100% - 64px));
display: grid;
gap: 12px;
gap: 10px;
justify-self: center;
margin: 0 0 28px;
margin: 0 0 24px;
border: 1px solid var(--senlin-border);
border-radius: 24px;
border-radius: 20px;
background: var(--senlin-panel);
padding: 18px 16px 14px;
box-shadow: 0 16px 40px rgba(29, 33, 41, 0.08);
padding: 14px 14px 10px;
box-shadow: 0 12px 32px rgba(29, 33, 41, 0.1);
}
.agent-composer .arco-textarea-wrapper {
@@ -1659,7 +1760,8 @@
.agent-composer textarea {
color: var(--senlin-text);
font-size: 15px;
font-size: 14px;
line-height: 1.6;
}
.agent-composer textarea::placeholder {
@@ -1674,7 +1776,7 @@
}
.agent-model-chip.arco-btn {
height: 36px;
height: 32px;
border-color: color-mix(in srgb, var(--senlin-primary) 32%, var(--senlin-border));
border-radius: 999px;
background: var(--senlin-soft-blue);
@@ -1683,9 +1785,21 @@
}
.agent-send-button.arco-btn {
width: 38px;
height: 38px;
background: #aebeff;
width: 34px;
height: 34px;
}
.agent-composer-actions {
display: flex;
align-items: center;
gap: 4px;
}
.agent-composer-hint {
display: block;
padding: 0 6px;
text-align: center;
font-size: 11px;
}
.theme-dark .agent-session-list.queue-section.arco-card {
@@ -1697,6 +1811,16 @@
box-shadow: 0 16px 40px rgb(0 0 0 / 22%);
}
@media (max-width: 960px) {
.agent-chat-shell {
grid-template-columns: 210px minmax(0, 1fr);
}
.agent-composer {
width: calc(100% - 32px);
}
}
.reply-box,
.chat-input {
display: grid;
@@ -1728,6 +1852,34 @@
padding: 12px;
}
.task-tag-filters {
gap: 8px !important;
}
.task-tag-filter {
display: inline-flex;
border: 0;
border-radius: 4px;
background: transparent;
padding: 0;
cursor: pointer;
}
.task-tag-filter .arco-tag {
margin: 0;
transition: box-shadow 0.16s ease, transform 0.16s ease;
}
.task-tag-filter:hover .arco-tag {
transform: translateY(-1px);
box-shadow: 0 3px 10px color-mix(in srgb, var(--senlin-primary) 15%, transparent);
}
.task-tag-filter:focus-visible {
outline: 2px solid color-mix(in srgb, var(--senlin-primary) 55%, transparent);
outline-offset: 2px;
}
.task-plan-card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));