Skip to content

feat(workspaces): Add admin API and dashboard UI - #1562

Merged
dcramer merged 6 commits into
mainfrom
feat/workspace-admin-ui
Aug 14, 2026
Merged

feat(workspaces): Add admin API and dashboard UI#1562
dcramer merged 6 commits into
mainfrom
feat/workspace-admin-ui

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Part of #1417.

Operators can create, update, list, and delete install-wide Workspace recipes without writing SQL. The dashboard exposes this at System → Workspaces, and agents keep using listWorkspaces / switchWorkspace against the same recipes.

What shipped

  • REST admin routes: GET/POST /api/workspaces, GET/PUT/DELETE /api/workspaces/:id
  • Recipe validation for names, providers, repos, one primary repo, checkout path collisions, and unique names
  • Transactional create/update/delete in the Workspace store (executor.db() resolved inside each transaction callback)
  • Dashboard page at /system/workspaces with list, create, edit, and delete flows
  • Component split under pages/system/: WorkspacesPage, WorkspaceList, WorkspaceEditor, workspaceDraft

Follow-up fixes on this branch

  • DashboardApiError keeps the stable ${path} returned ${status} message contract; body text stays on apiError for UI copy
  • Warden finding on non-transactional recipe writes: create/update/delete bind Drizzle inside the transaction; integration coverage verifies create leaves no row and update preserves the prior recipe after rollback
  • Mobile create form layout and helper-text styling cleaned up during visual QA

Checks

  • pnpm --filter @sentry/junior typecheck
  • pnpm --filter @sentry/junior-dashboard typecheck
  • junior unit: workspace validation (4)
  • junior integration: workspace admin API (4), including rollback behavior
  • dashboard routes + telemetry component tests
  • dashboard e2e: system nav includes Workspaces; create-recipe journey
  • CI required checks green on b6d585d (unit, integration, dashboard, dashboard e2e, types, lint)

Out of scope

Default Workspace for new conversations and snapshot warmup for registered recipes remain follow-ups after this lands.

Requested by David Cramer.

--

View Junior Session [Sentry]

Operators can create, update, list, and delete install-wide Workspace
recipes from /system/workspaces and /api/workspaces, so agents can switch
into prepared multi-repo sandboxes without direct SQL.

Co-Authored-By: David Cramer <david@sentry.io>
@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
junior-docs Ready Ready Preview Aug 14, 2026 6:26pm

Request Review

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

Dashboard visual evidence

Mode: path-selected
Selected: conversations, conversation-detail, system, component-gallery

Triggered by:

  • packages/junior-dashboard/e2e/harness.ts
  • packages/junior-dashboard/e2e/system.spec.ts
  • packages/junior-dashboard/package.json
  • packages/junior-dashboard/src/client/App.tsx
  • packages/junior-dashboard/src/client/http.ts
  • packages/junior-dashboard/src/client/pages/system/SystemNavigation.tsx
  • packages/junior-dashboard/src/client/pages/system/WorkspaceEditor.tsx
  • packages/junior-dashboard/src/client/pages/system/WorkspaceList.tsx

Conversations · desktop

Conversations · desktop

Conversations · mobile

Conversations · mobile

Conversation detail · desktop

Conversation detail · desktop

Conversation detail · mobile

Conversation detail · mobile

System · desktop

System · desktop

Component gallery · desktop

Component gallery · desktop

Full-page screenshots from the mock dashboard. Not a pixel-diff gate.

@blacksmith-sh

This comment has been minimized.

API body text stays on apiError for UI copy. The Error message keeps the
stable path/status contract used by client tests and logs.
Comment thread packages/junior/src/chat/workspaces/store.ts
Co-Authored-By: David Cramer <david@sentry.io>
@dcramer
dcramer marked this pull request as ready for review August 14, 2026 18:00
@github-actions github-actions Bot added the risk: high PR risk score: high label Aug 14, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b6d585d. Configure here.

Comment thread packages/junior-dashboard/src/client/App.tsx Outdated
Match People and Locations: /system/workspaces should render when
auth is disabled instead of bouncing to home via loggedIn.
Comment thread packages/junior-dashboard/src/client/pages/system/WorkspacesPage.tsx Outdated
Capture an editor session when opening or closing the draft. Save
success and error only touch editor state when that session is still
current, matching delete's guard against wiping a newer draft.
@dcramer
dcramer merged commit df6bada into main Aug 14, 2026
39 checks passed
@dcramer
dcramer deleted the feat/workspace-admin-ui branch August 14, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant