Skip to content

Conversation

@rabanspiegel
Copy link
Contributor

@rabanspiegel rabanspiegel commented Dec 16, 2025

Summary

Closes #408

Completes the terminology rename from "workspace" to "task" across the codebase. Updates database schema, types, components, UI strings, telemetry events, and storage keys.

✅ Latest main merged - All conflicts resolved while preserving task naming
✅ Database migration safe - Automatically runs on first launch, preserves all user data (projects, tasks, conversations, messages)

Kept unchanged: Docker mount path /workspace (container convention), Linear API workspaceName (their field name)

Minor impact: Provider preferences in localStorage will reset (users re-select Claude/Codex/etc)


Recent Updates

  • ✅ Merged latest main (auto-approve PR, Monaco diff editor, etc.)
  • ✅ Fixed conflicts keeping task naming + new features
  • ✅ Fixed AllChangesDiffModal & FileChangesPanel (workspacePath → taskPath)
  • ✅ Fixed PrGenerationService (workspacePath → taskPath throughout)
  • ✅ Fixed UI text ("Checking workspaces..." → "Checking tasks...")

Database Migration

The migration automatically runs on first app launch:

-- Renames tables/columns, preserves ALL data
ALTER TABLE workspaces RENAME TO tasks;
ALTER TABLE conversations: workspace_id → task_id

No data loss: All projects, tasks, conversations, and messages are fully preserved.


Testing Before Merge

Must verify

  • App launches, existing tasks still appear
  • Create, rename, delete a task
  • Terminal works (open, type, output appears)
  • Container preview starts/stops
  • Changes diff modal works (click "Check changes")

Quick checks

  • Kanban drag-and-drop works
  • Command palette shows "Tasks" group
  • UI says "task" not "workspace" everywhere
  • No console errors
  • Delete task/project shows correct warnings

Note

Renames “workspace” to “task” across DB, IPC/services, UI, telemetry, and tests, with a migration that preserves existing data.

  • Database:
    • Rename table workspacestasks; update FKs (conversations.workspace_idconversations.task_id) and indexes; update drizzle snapshots/journal.
  • Main/IPC & Services:
    • Update all handlers/args and logs from workspace*task* (container, git, DB, host preview, icons, telemetry, plan lock, fs).
    • Container services/config: API, runner events (workspaceIdtaskId), compose helpers, port mapping, mock runner.
    • Worktree/GitHub integrations: parameters and return fields renamed to task.
  • Renderer/UI:
    • Types, components, hooks, and libs switch to task (Chat, Kanban, Terminal, Changes Diff, BrowserPane, Command Palette, Right Sidebar, TaskModal, TaskPorts/Terminals, status/terminals stores).
    • UI copy and grouping updated (e.g., Command Palette “Tasks”).
  • Telemetry:
    • Event names and snapshot metrics changed from workspace_*task_*.
  • Tests:
    • Adjust tests for new task* names and container event field changes.

Written by Cursor Bugbot for commit 277f8fa. This will update automatically on new commits. Configure here.

- Rename WorkspaceSnapshot to TaskSnapshot
- Rename workspaceStates/workspaceListeners to taskStates/taskListeners
- Rename ensureWorkspaceState/updateWorkspaceState to ensureTaskState/updateTaskState
- Rename subscribeToWorkspaceRunState to subscribeToTaskRunState
- Rename refreshWorkspaceRunState to refreshTaskRunState
- Rename watchWorkspacePty/Containers/Activity to watchTaskPty/Containers/Activity
- Update comments and internal variable names
- Rename prevWorkspaceIdRef/lastWorkspaceUrlRef to prevTaskIdRef/lastTaskUrlRef
- Rename isWorkspaceMultiAgent prop to isTaskMultiAgent
- Update imports to use renamed functions
- Update comments and telemetry events (workspace_created -> task_created)
- Rename Workspace interface to Task in DatabaseService.ts
- Rename loadWorkspaceContainerConfig to loadTaskContainerConfig
- Rename inferPackageManagerForWorkspace to inferPackageManagerForTask
- Rename resolveWorkspacePath to resolveTaskPath in containerIpc.ts
- Rename parseWorkspaceMetadata to parseTaskMetadata
- Update ContainerConfigService tests for loadTaskContainerConfig
- Update ContainerIpc tests for loadTaskContainerConfig
- Update ContainerRunnerService tests for loadTaskContainerConfig
- Rename test helper makeWorkspaceDir to makeTaskDir
@vercel
Copy link

vercel bot commented Dec 16, 2025

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

Project Deployment Review Updated (UTC)
docs Ready Ready Preview, Comment Dec 18, 2025 9:20pm

Resolved conflicts by applying task terminology to new features from main:
- PR generation with auto-generated titles/descriptions
- Global terminal support with mode switching
- Improved file change detection with untracked files
- Enhanced delete confirmations with PR detection
Updates the PR generation API to use taskPath consistently with other
git operations. Also renames getWorkspaceByPath to getTaskByPath in
DatabaseService.
workspaceName refers to Linear's organization/workspace concept, not
emdash's task concept. Should not have been renamed.
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on January 7

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

--> statement-breakpoint
INSERT INTO `__new_conversations`("id", "task_id", "title", "created_at", "updated_at") SELECT "id", "workspace_id", "title", "created_at", "updated_at" FROM `conversations`;--> statement-breakpoint
DROP TABLE `conversations`;--> statement-breakpoint
ALTER TABLE `__new_conversations` RENAME TO `conversations`;--> statement-breakpoint
Copy link

Choose a reason for hiding this comment

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

Bug: SQLite migration drops table with FKs enabled

PRAGMA foreign_keys=ON is re-enabled before recreating conversations, but the migration later executes DROP TABLE conversations while messages still has a foreign key referencing conversations. With foreign keys enforced, SQLite commonly rejects dropping the referenced table, causing the migration (and app startup) to fail.

Fix in Cursor Fix in Web

Resolved conflicts by keeping task/taskId naming from this branch and
merging in new features from main:
- Auto-approve functionality with provider flag checks
- Monaco diff editor implementation
- PR status checking with isActivePr
- Loading states for delete confirmations
- Temp file cleanup in PR creation
- PrGenerationService: workspacePath → taskPath (all params & comments)
- ProjectDeleteButton: 'Checking workspaces...' → 'Checking tasks...'
- TerminalSessionManager: update comment workspaceId → taskId
- AllChangesDiffModal: workspacePath → taskPath (prop & all usages)
- FileChangesPanel: fix workspaceId → taskId in AllChangesDiffModal

These were introduced in the merge from origin/main and needed to
be updated to match the workspace→task rename refactor.
@arnestrickmann arnestrickmann merged commit 0c817f5 into main Dec 18, 2025
4 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.

[refactor]: Rename remaining 'workspace' references to 'task'

3 participants