--- ui_doc_type: component component_id: workspace-task-list status: 구현됨 source_evidence: - type: code path: apps/client/lib/src/features/workspaces/presentation/workspace_home_page.dart notes: _buildTaskSection, _buildMockTaskSection, _buildTaskRow, _buildEmptyTasks, _buildTaskError 구현. - type: code path: apps/client/lib/src/features/workspaces/domain/workspace_task.dart notes: WorkspaceTask row model. - type: user path: null notes: agent-ui 생성 요청. --- # Workspace Task List Component ID: `workspace-task-list` Status: `구현됨` ## Source Evidence | Type | Path | Notes | |------|------|-------| | code | `apps/client/lib/src/features/workspaces/presentation/workspace_home_page.dart` | _buildTaskSection, _buildMockTaskSection, _buildTaskRow, _buildEmptyTasks, _buildTaskError 구현. | | code | `apps/client/lib/src/features/workspaces/domain/workspace_task.dart` | WorkspaceTask row model. | | user | 없음 | agent-ui 생성 요청. | ## Purpose 선택 workspace의 active task 목록을 표시한다. service boundary가 없으면 mock row를 보여주고, service boundary가 있으면 deterministic loading, empty, error state를 표시한다. ## Used By - `workspace-home`: `workspace-home.active-tasks` ## Anatomy - Section body - Task row icon - Task title - Status chip - Empty state row - Error state row with Retry - Loading progress ## Variants - mock: `loadTasks`가 없을 때 project task count 기반 rows - service-backed: `loadTasks`가 있을 때 FutureBuilder 기반 rows ## States - default - loading - empty - error - disabled: 없음 ## Rules - loader가 없으면 mock task section을 사용한다. - loader가 있으면 task future의 loading, error, empty, data state를 그대로 반영한다. - error state는 raw exception이나 secret transport detail을 노출하지 않는다. ## Decision History - 2026-06-24: 구현된 workspace task list를 component로 등록했다.