---
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로 등록했다.
