qwen-code/packages/web-shell/client/components/MessageList.module.css
Shaojin Wen b748ef4b73
Some checks are pending
Qwen Code CI / Classify PR (push) Waiting to run
Qwen Code CI / Lint (push) Blocked by required conditions
Qwen Code CI / Test (macos-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Test (ubuntu-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Test (windows-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Blocked by required conditions
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
feat(web-shell): revamp floating todo panel interactions (#5069)
The "Current tasks" panel above the composer was a static display:
always expanded, rotate-to-front ordering with jumbled numbering,
no progress summary, and it vanished the instant the last item
completed.

- Collapsible header (persisted in localStorage); collapsed mode is a
  single line showing progress + the current in-progress item
- Progress counter (completed/total) in the header
- Natural-order window anchored on the in-progress item replaces the
  rotation: one completed context line above, pendings below, with
  clickable "N completed" / "N more" summary lines that expand the
  full list (and "Show less" to return)
- All-done moment: a finished list stays visible as "All tasks
  completed" until the next user prompt instead of disappearing
  instantly; historical finished lists stay hidden on session restore
- Locate button scrolls the transcript to the source TodoWrite/plan
  message with a flash highlight (new MessageList imperative
  scrollToMessage, callId fallback for compact-merged tool groups)
- Visual consistency: in_progress uses the accent color, PlanMessage
  adopts the shared icon set, items ellipsize to one line with a
  hover tooltip, and the number column scales past 9 items so the
  status icons stay aligned

getFloatingTodos moves to utils/todos.ts and now reports
{todos, allCompleted, sourceMessageId, sourceCallId}; panel visibility
is a render-time state machine so the active-to-completed transition
does not unmount the panel for a frame. New i18n keys for en/zh-CN
and 17 new unit tests.
2026-06-13 11:51:03 +08:00

36 lines
592 B
CSS

.list {
flex: 1;
overflow-y: auto;
padding: 12px 24px;
scrollbar-width: thin;
scrollbar-color: var(--border-color) transparent;
min-height: 0;
}
.list::-webkit-scrollbar {
width: 6px;
}
.list::-webkit-scrollbar-track {
background: transparent;
}
.list::-webkit-scrollbar-thumb {
background: var(--border-color);
border-radius: 3px;
}
.rowFlash {
border-radius: 8px;
animation: row-flash 1.6s ease-out;
}
@keyframes row-flash {
0%,
30% {
background: color-mix(in srgb, var(--accent-color) 16%, transparent);
}
100% {
background: transparent;
}
}