---
id: w6/m3/t003
title: "Workspace settings page: rename, plan display, workspace id/metadata"
worker: worker6
status: done
estimate: 30m
depends_on: [w6/m3/t001]
---

## Closeout

Shipped as `src/routes/workspace.settings.tsx` + `src/features/workspaces/components/workspace-details-card.tsx` (distinct from account-level `/settings`, which is Kratos-backed). Rename form + plan badge + id/created-at metadata; rename verified to propagate to the switcher immediately (Apollo cache write + `refetch()`). **Deviation from spec:** role-gating the rename control off the viewer's role was scoped out — m1 ships every membership as `"admin"` (create is the only writer this milestone; w4/m12 owns real roles), so there is no non-admin case to gate against yet. The backend still enforces `can_manage` server-side regardless (`renameWorkspace`'s `AuthorizeOn(RelCanManage, ...)`), so a future non-admin role added by w4/m12 fails safely even without a client-side hide.

## Objective

A workspace settings route (per-workspace, reachable from the switcher/sidebar) showing the workspace's identity — name (editable, admin-only, via `renameWorkspace`), `tea-` id with copy button, current plan with its limits — laid out to match m1/t001's captured Render settings page.

## Context

- Existing `dashboard/src/routes/settings.tsx` is account-level; this is workspace-level — follow the captured Render IA for where it lives (likely `workspace.settings.tsx` or a settings tab set).
- Role-gate the rename control off the viewer's role from the `workspaces` query (non-admins see read-only).
- w4/m12's Team page will slot beside this later — leave the settings IA extensible (tabs or sections).

## Steps

1. Route + layout per captured artifact; name edit with optimistic update + error rollback.
2. Plan section: plan name, price, limits (services/members), no self-serve plan change unless the capture shows one.
3. Danger zone placeholder section (t004 fills it).

## Files

- `dashboard/src/routes/` (new workspace-settings route)
- `dashboard/src/graphql/`

## Acceptance criteria

- [ ] Rename propagates to the switcher and persists
- [ ] Non-admin sees read-only name (control disabled/hidden per Render behavior)
- [ ] Plan + limits displayed from live data, not hardcoded

## Out of scope

- Delete UI (t004); members management (w4/m12).
