---
ui_doc_type: view
view_id: workspace-home
status: 구현됨
frame: null
source_evidence:
  - type: code
    path: apps/client/lib/src/features/workspaces/presentation/workspace_home_page.dart
    notes: WorkspaceHomePage, project selection, dual/single pane layout, task states, proto-socket diagnostics 구현.
  - type: code
    path: apps/client/lib/src/features/workspaces/domain/project_workspace.dart
    notes: ProjectWorkspace UI model과 mock workspace seed.
  - type: code
    path: apps/client/lib/src/features/workspaces/domain/workspace_task.dart
    notes: Core task channel 응답을 tolerant하게 파싱하는 task row model.
  - type: docs
    path: apps/client/README.md
    notes: WorkspaceHomePage가 workbench shell 내부에서 app bar를 숨길 수 있다는 mount 기준.
  - type: user
    path: null
    notes: agent-ui 생성 요청.
regions:
  - workspace-home.workspace-list
  - workspace-home.workspace-details
  - workspace-home.active-tasks
  - workspace-home.proto-socket-diagnostics
  - workspace-home.launch-action
---

# Workspace Home

View ID: `workspace-home`

Frame:
- 없음

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `apps/client/lib/src/features/workspaces/presentation/workspace_home_page.dart` | WorkspaceHomePage, project selection, dual/single pane layout, task states, proto-socket diagnostics 구현. |
| code | `apps/client/lib/src/features/workspaces/domain/project_workspace.dart` | ProjectWorkspace UI model과 mock workspace seed. |
| code | `apps/client/lib/src/features/workspaces/domain/workspace_task.dart` | Core task channel 응답을 tolerant하게 파싱하는 task row model. |
| docs | `apps/client/README.md` | WorkspaceHomePage가 workbench shell 내부에서 app bar를 숨길 수 있다는 mount 기준. |
| user | 없음 | agent-ui 생성 요청. |

## Purpose

프로젝트 workspace 목록과 선택된 workspace의 task 상태를 보여주는 기본 업무 화면이다. 큰 화면에서는 목록과 상세를 나란히 보여주고, 작은 화면에서는 목록과 선택 workspace action을 압축해서 보여준다.

## Primary Users

- 프로젝트별 개발 workspace를 열고 task 상태를 확인하는 사용자
- proto-socket 연결 상태와 task loading 상태를 확인하는 운영 사용자

## Primary Tasks

- workspace를 선택한다.
- 선택된 workspace의 설명, status, active tasks를 확인한다.
- code-server workspace entry를 연다.
- proto-socket task service가 연결된 경우 task loading, empty, error 상태를 확인하고 재시도한다.

## Information Priority

1. 선택된 workspace와 launch action
2. workspace description과 status
3. active tasks와 proto-socket diagnostics

## Regions

| Region ID | Purpose | Component | Priority | Notes |
|-----------|---------|-----------|----------|-------|
| `workspace-home.workspace-list` | ProjectWorkspace 목록과 선택 상태 표시 | `workspace-list` | high | large screen에서는 좌측 panel, small screen에서는 상단 list. |
| `workspace-home.workspace-details` | 선택 workspace 제목, status, description 표시 | `status-chip` | high | 선택 workspace가 없으면 selection empty message 표시. |
| `workspace-home.active-tasks` | mock 또는 service 기반 active task 표시 | `workspace-task-list` | high | `loadTasks`가 없으면 mock rows, 있으면 FutureBuilder state를 따른다. |
| `workspace-home.proto-socket-diagnostics` | proto-socket lifecycle diagnostics 표시 | `proto-socket-diagnostics` | medium | lifecycle이 없으면 표시하지 않는다. |
| `workspace-home.launch-action` | code-server workspace entry 열기 | 없음 | medium | `onLaunchCodeServer` callback이 있을 때 workspace launch를 시도한다. |

## Actions

| Action ID | Trigger | Result | Guard |
|-----------|---------|--------|-------|
| `workspace-home.select-project` | workspace card tap | 선택 workspace와 task future를 갱신한다. | 없음 |
| `workspace-home.launch-workspace` | `Open Workspace` button | `WorkspaceLauncher` boundary로 code-server entry를 연다. | `onLaunchCodeServer` callback 존재 |
| `workspace-home.reload-tasks` | loader 변경 또는 retry button | 현재 선택 workspace의 task loading을 다시 시작한다. | `loadTasks` callback 존재 |

## States

- loading: `loadTasks` Future가 waiting이면 circular progress를 표시한다.
- empty: task list가 비어 있거나 mock tasks count가 0이면 idle message를 표시한다.
- error: task load 실패 시 non-secret error message와 Retry action을 표시한다.
- permission-denied: view-level permission guard는 구현되어 있지 않다.

## Open Questions

- 없음

## Decision History

- 2026-06-24: 구현된 Flutter WorkspaceHomePage를 `구현됨` view로 등록했다.
