From 3b1b40193e8764e87fa59158ce40f9c7aa49cca5 Mon Sep 17 00:00:00 2001 From: wusumac <736139669@qq.com> Date: Thu, 17 Sep 2026 10:27:08 +0800 Subject: [PATCH] fix(web): make the timeline the default view, requirement cards opt-in Grouping every message into collapsed requirement cards made the team page read as a wall of summaries. The default is now a chronological timeline (with the AI chatter folding) and the requirement cards moved behind a 'By requirement' filter; 'Key' and 'Task' views are unchanged. --- web/src/components/teams/TeamChatPage.tsx | 10 +++++----- web/src/lib/locales/en.ts | 3 ++- web/src/lib/locales/zh-CN.ts | 3 ++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/web/src/components/teams/TeamChatPage.tsx b/web/src/components/teams/TeamChatPage.tsx index 58eaa134..a6852df3 100644 --- a/web/src/components/teams/TeamChatPage.tsx +++ b/web/src/components/teams/TeamChatPage.tsx @@ -20,7 +20,7 @@ import { TeamSettingsDialog } from './TeamSettingsDialog' import { TeamTaskDialog } from './TeamTaskDialog' import { memberStatusLabel, statusDotClass } from './teamStatus' -type Filter = 'all' | 'key' | 'task' +type Filter = 'timeline' | 'requirements' | 'key' | 'task' function isKeyMessage(message: TeamMessage, leadSessionId: string | null): boolean { if (message.fromKind === 'human') return true @@ -43,7 +43,7 @@ export function TeamChatPage() { const { detail, isLoading, error } = useTeam(api, teamId) const { messages, error: messagesError } = useTeamMessages(api, teamId) - const [filter, setFilter] = useState('all') + const [filter, setFilter] = useState('timeline') const [taskId, setTaskId] = useState('') const [draft, setDraft] = useState('') const [to, setTo] = useState('') @@ -380,7 +380,7 @@ export function TeamChatPage() {
- {(['all', 'key', 'task'] as const).map((value) => ( + {(['timeline', 'requirements', 'key', 'task'] as const).map((value) => ( ))} {filter === 'task' ? ( @@ -424,7 +424,7 @@ export function TeamChatPage() {
{t('team.loading')}
) : visibleMessages.length === 0 ? (
{t('team.empty')}
- ) : filter === 'all' ? ( + ) : filter === 'requirements' ? (
{requirementGroups.map((group) => (