Skip to content

Add workspace tab bar with session chrome - #11

Merged
cursor[bot] merged 4 commits into
mainfrom
cursor/workspace-desktops-17c0
Aug 29, 2026
Merged

Add workspace tab bar with session chrome#11
cursor[bot] merged 4 commits into
mainfrom
cursor/workspace-desktops-17c0

Conversation

@gaoyu06

@gaoyu06 gaoyu06 commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Workspace is now a first-class virtual desktop: a tab bar at the top of the canvas, a Default workspace plus user-created ones, and each workspace still owns its mosaic of session windows. Workspaces and sessions can be renamed and given a tag color plus icon (builtin set, slug, or sanitized SVG). The sidebar workspace dropdown is gone so there is only one switcher. Also slims Composer (screenshot/record removed; extras behind ⋯) and adds sidebar session search.

Scope

  • Data: optional isDefault / color / icon on workspaces (file version stays 1; old files promote the first workspace to default). Session color / icon / titleLocked persist with project tabs.
  • UI: canvas-top WorkspaceTabs, shared chrome popover, mosaic/sidebar session chrome, drag-select fix on tabs.
  • Composer: attach + model + send visible; mic/backend/effort/approval/context in overflow. No screenshot or screen-record buttons.
  • Sidebar: session search/filter. Navigator is current-workspace only.

Ship-ready?
Not yet. Unit tests and pnpm check are green; GUI walkthrough and a second-pass review are still outstanding on this draft.

Needs review?
Yes. Focus on persist/parse of chrome (especially SVG sanitizer), default-workspace delete/switch, and whether titleLocked still allows first-message titles for new sessions.

Review preconditions

  • Branch is cursor/workspace-desktops-17c0 on current main (canvas mosaic; right dock must stay gone).
  • pnpm test and pnpm check should be green.
  • Manual: create a second workspace, arrange two chat tiles, rename/color/icon a workspace and a session, confirm switching restores each mosaic, confirm Default cannot be deleted.

Test results
pnpm test: 28 files, 451 tests passed. pnpm check: 0 errors.

Open in Web Open in Cursor 

cursoragent and others added 4 commits August 29, 2026 10:03
Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
- Persist the desktop session id on every saved tab (sid only when the
  engine persisted the conversation); restore reuses the id, spawning
  empty windows fresh, so a saved chat split survives switches/restarts
- Serialize workspace swaps with a busy flag + generation token; disable
  the workspace tab bar while one is in flight
- Re-validate nested tab chrome in sanitizeProjects; reject url(...)
  attribute values in sanitizeSvg
- Use i18n strings for workspace/sidebar aria-labels

Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
Co-authored-by: Gao Yu <gaoyu06@users.noreply.github.com>
@cursor
cursor Bot merged commit 897b0db into main Aug 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants