yoi/.yoi/tickets/00001KWHJ0XH6/item.md

199 lines
7.6 KiB
Markdown

---
title: 'Workspace BrowserにSettings/Admin画面のshellとnavigationを追加する'
state: 'closed'
created_at: '2026-07-02T13:59:17Z'
updated_at: '2026-07-02T14:39:02Z'
assignee: null
queued_by: 'workspace-panel'
queued_at: '2026-07-02T14:24:54Z'
---
## 背景
Workspace Browser には Worker / Runtime / Repository / Ticket などの作業 surface はあるが、Backend 設定や接続状態を扱う Settings/Admin surface はまだ無い。
今後 Runtime connections、Backend config、data store status、workspace identity などを UI から確認・編集する必要がある。これは普通に管理画面として設計する。ただし現状の Workspace Backend には user / permission / multi-user authorization が無いため、存在しない権限モデルを UI 上で fake しない。
Runtime connection 管理 UI を直接作り始めると、Settings/Admin の entry point / route / navigation / diagnostic / restart-required 表示などの共通設計と、Runtime connection config の永続化が混ざる。この Ticket では先に Settings/Admin shell と navigation だけを作り、Runtime Connections は後続 Ticket で実装する。
## 目的
- Workspace Browser に Settings/Admin surface を追加する。
- 将来の admin UI の受け皿になる route / layout / navigation を用意する。
- 現時点で存在しない user / permission / multi-user authorization を UI に出さない。
- Runtime Connections などの後続 Settings section を追加できるようにする。
- 既存の Worker Console / Sidebar UX を壊さない。
- mutation や Runtime connection 永続化は後続 Ticket に委譲する。
## 位置づけ
Settings/Admin は Workspace Backend の管理画面である。ただし v0 では権限管理を持たない。
明記する制約:
- user account は無い。
- role / permission model は無い。
- multi-user authorization は無い。
- したがって「管理者だけが操作できる」などの UI 文言や fake role を作らない。
- 現時点の操作境界は「この Backend にアクセスできること」だけである。
将来の受け皿:
- Runtime connections。
- Backend config / effective config view。
- data root / store status。
- workspace identity view。
- restart required / sanitized diagnostics。
- 将来の user / permission 管理。ただしこの Ticket では実装しない。
## UI entry point
Workspace Browser の sidebar に Settings/Admin entry point を追加する。
候補:
```text
...
SETTINGS
```
または bottom utility として:
```text
⚙ Settings
```
v0 では既存の Worker / Repository / Ticket navigation を邪魔しない位置に置く。Worker Console が主導線であることを崩さない。
## Route 設計
SvelteKit route として Settings/Admin shell を追加する。
候補:
```text
/settings
/settings/runtime-connections
/settings/backend-config
```
v0 では `/settings` が overview / placeholder を表示し、section navigation から placeholder section に遷移できるところまででよい。
Settings section の初期候補:
- Runtime Connections
- 後続 Ticket `00001KWHHRTM9` で実装する。
- v0 shell では placeholder / empty state を表示する。
- Backend Config
- `.yoi/workspace-backend.local.toml` / packaged default / effective config の表示・diff の受け皿。
- v0 shell では read-only placeholder でよい。
- Workspace Identity
- workspace id / display name / initialized state などの read-only 表示の受け皿。
## 権限モデルについての表示
Settings/Admin overview には、現在 user / permission model が無いことを簡潔に示す。
例:
```text
This Workspace Backend currently has no user or permission model. Anyone with access to this backend can change these settings.
```
日本語 UI なら:
```text
現在、この Workspace Backend にはユーザー権限モデルがありません。この Backend にアクセスできる人は設定を変更できます。
```
これは「管理画面ではない」という意味ではない。無い権限モデルをあるように見せないための注意書きである。
## Common UI patterns
Settings/Admin shell では後続 section が使う共通 pattern を用意する。
### Sanitized diagnostic
- raw path / secret / token / socket path / runtime store path を出さない方針を示す。
- v0 は reusable component でなくても、Settings shell 内の表示 pattern として定義する。
### Restart required badge
Runtime connection や backend config の変更は Backend restart が必要になる場合がある。
v0 shell では badge / callout の見た目だけ用意してよい。
```text
Restart required
```
### Save / dirty state
この Ticket では mutation を実装しないため、dirty tracking の本実装は不要。ただし後続 section が使う前提として、save/cancel area を置ける layout にする。
## Backend API との関係
この Ticket では Settings mutation API は実装しない。
後続 Ticket では API path を次のどちらかに寄せることを検討する。
```http
GET /api/settings
GET /api/settings/runtime-connections
```
または Workspace 配下であることを強調するなら:
```http
GET /api/workspace/settings
GET /api/workspace/settings/runtime-connections
```
v0 shell は既存 `/api/workspace` projection などで表示可能な範囲に留めてよい。新 API を追加する場合も read-only summary に限定する。
## 依存関係
この Ticket は Runtime connection 管理 Ticket `00001KWHHRTM9` の前提とする。Runtime connection の add/delete/test/config persistence はこの Ticket では実装しない。
## 実装要件
- Workspace Browser に Settings/Admin entry point を追加する。
- `/settings` route を追加する。
- Settings/Admin shell layout を追加する。
- Section navigation を追加する。
- Runtime Connections placeholder section を追加する。
- Backend Config placeholder section を追加する。
- Workspace Identity placeholder / read-only section を追加する。
- 現時点で user / permission model が無いことを UI に明記する。
- user / role / permission の fake UI を作らない。
- Restart required / sanitized diagnostic の表示 pattern を用意する。
- 既存 Worker Console / Sidebar navigation と衝突しない。
## 受け入れ条件
- Sidebar または bottom utility から Settings/Admin に移動できる。
- `/settings` が表示できる。
- Settings/Admin shell に「現時点で user / permission model が無い」旨の注意書きがある。
- Settings section navigation がある。
- Runtime Connections placeholder がある。
- Backend Config placeholder がある。
- Workspace Identity placeholder または read-only summary がある。
- UI 文言が fake user / role / permission model を示唆しない。
- raw path / secret / token / socket path / runtime store path を placeholder や diagnostic に表示しない。
- 既存 Worker Console / Runtime Console / Sidebar の主導線が壊れていない。
- Focused tests が Settings route rendering、navigation、permission-model disclaimer、placeholder sections を確認する。
- `cd web/workspace && deno task test` が通る。
- `cd web/workspace && deno task check` が通る。
- `git diff --check` が通る。
## 対象外
- Runtime connection add/delete/test 実装。
- `.yoi/workspace-backend.local.toml` の read-modify-write API。
- Backend config editor。
- secret store UI。
- user / permission UI。
- Runtime live register / unregister。
- Manual Coding Worker 作成 form。
- Nix packaging に関わる変更。