refactor(web): /workspace chat-only — strip spec mode, drop ?spec/?task params #1121

Open
opened 2026-05-11 23:39:02 +00:00 by claude-desktop · 0 comments
Collaborator

As an operator,
I want /workspace to be the architect chat surface only,
so that the page is focused on one job and the 1845-line workspace.index.tsx shrinks to something maintainable.

Hard break of ?spec=<name> bookmarks per operator decision 2026-05-12. Old links land on the chat page; ticket cannot regress without explicit reversal.

Acceptance criteria

Route + URL contract

  • routes/workspace.tsx validateSearch keeps only session and repo. spec and task are dropped.
  • routes/workspace.index.tsx rewritten to render sessions list (left pane / mobile drawer) + Transcript + Composer only. Target ≤ 700 lines.
  • No imports of SpecEditor, saveSpec, spec-related dialogs, or spec-mode branches survive.
  • BreakdownPreview drawer remains, opened only via the /breakdown slash command (unchanged).

Slash commands

  • /spec <name> slash command navigates to /specs/$name (instead of flipping centre-pane mode). Falls back to /specs if name omitted.
  • /breakdown and /assign unchanged.
  • WorkspaceCommandPalette trimmed: spec-creation entries removed (those move to /specs in a separate story or are dropped if redundant).

Handoff from /specs

  • On mount, if the composer-handoff Zustand store (from wsplit-4) holds a value, the composer's initial draft is seeded with the mention and the store is cleared. Idempotent on hot reload.

Tests

  • workspace.test.tsx rewritten around chat-only surface: sessions list, transcript, composer, /spec navigates to /specs/$name, /breakdown opens drawer.
  • Legacy ?spec=<name> URL → renders chat page (no redirect, no crash).
  • <Composer> keymap (useWorkspaceKeymap) still wired.

Out of scope

  • Final cleanup of orphaned imports + paraglide keys (story wsplit-6).
  • Server-side /architect/* changes (none).

Dependencies

  • Blocked by wsplit-2 (the /spec slash command needs /specs/$name to exist).
  • Blocked by wsplit-4 (composer-handoff store contract is defined there).

References

  • Spec: docs/specs/workspace-split.md § /workspace.
**As an** operator, **I want** `/workspace` to be the architect chat surface only, **so that** the page is focused on one job and the 1845-line `workspace.index.tsx` shrinks to something maintainable. Hard break of `?spec=<name>` bookmarks per operator decision 2026-05-12. Old links land on the chat page; ticket cannot regress without explicit reversal. ## Acceptance criteria ### Route + URL contract - [ ] `routes/workspace.tsx` `validateSearch` keeps only `session` and `repo`. `spec` and `task` are dropped. - [ ] `routes/workspace.index.tsx` rewritten to render sessions list (left pane / mobile drawer) + Transcript + Composer only. Target ≤ 700 lines. - [ ] No imports of `SpecEditor`, `saveSpec`, spec-related dialogs, or spec-mode branches survive. - [ ] `BreakdownPreview` drawer remains, opened only via the `/breakdown` slash command (unchanged). ### Slash commands - [ ] `/spec <name>` slash command navigates to `/specs/$name` (instead of flipping centre-pane mode). Falls back to `/specs` if name omitted. - [ ] `/breakdown` and `/assign` unchanged. - [ ] `WorkspaceCommandPalette` trimmed: spec-creation entries removed (those move to /specs in a separate story or are dropped if redundant). ### Handoff from /specs - [ ] On mount, if the composer-handoff Zustand store (from wsplit-4) holds a value, the composer's initial draft is seeded with the mention and the store is cleared. Idempotent on hot reload. ### Tests - [ ] `workspace.test.tsx` rewritten around chat-only surface: sessions list, transcript, composer, `/spec` navigates to `/specs/$name`, `/breakdown` opens drawer. - [ ] Legacy `?spec=<name>` URL → renders chat page (no redirect, no crash). - [ ] `<Composer>` keymap (`useWorkspaceKeymap`) still wired. ## Out of scope - Final cleanup of orphaned imports + paraglide keys (story wsplit-6). - Server-side `/architect/*` changes (none). ## Dependencies - Blocked by wsplit-2 (the `/spec` slash command needs `/specs/$name` to exist). - Blocked by wsplit-4 (composer-handoff store contract is defined there). ## References - Spec: `docs/specs/workspace-split.md` § /workspace.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
charles/claude-hooks#1121
No description provided.