From 376217423d2d4e46bca37d21c199acbbc0affdce Mon Sep 17 00:00:00 2001 From: Tyler Date: Thu, 20 Aug 2026 10:17:03 -0500 Subject: [PATCH] fix(site/src/pages): use RotateCcwIcon for update actions (#28183) Closes [DES-22067](https://linear.app/codercom/issue/DES-22067/update-and-restart-action-uses-a-cloud-icon). The "Update and restart" / "Update and start" actions used `CloudIcon`, which reads as a cloud/network concept instead of an update-and-restart build action. Switch them to `RotateCcwIcon`, which the UI already uses for: - the `Restart` button on the workspace page - the `Update` action in `WorkspaceOutdatedTooltip`, `AgentOutdatedTooltip`, and `SubAgentOutdatedTooltip` Call sites changed: - `WorkspacePage/WorkspaceActions/Buttons.tsx` - `UpdateButton` - `WorkspacesPage/WorkspacesTable.tsx` - "Update and start workspace" and "Update and restart workspace" primary actions - `WorkspacesPage/WorkspacesPageView.tsx` - batch "Update" menu item The `requireActiveVersion` variant still uses `PlayIcon`, since that path starts the workspace on the active version rather than offering a choice. Worth a separate design pass if that should change too.
Investigation notes Verified against `origin/main` (`af90d8e2be`): no prior PR referenced DES-22067 and all three `CloudIcon` usages were still present. `grep` confirms no `CloudIcon` usages remain in `site/src` after this change. Icon conventions found in the codebase: - `RotateCcwIcon`: restart, update (outdated tooltips), retry (RetryButton, TasksTable, TaskPage, HealthLayout) - `RefreshCwIcon` / `RefreshCcwIcon`: softer "reload data" flows (terminal, secrets, prebuilds invalidate, inbox, git panel) `data-testid="bulk-action-update"` is preserved on the batch update item, so e2e coverage is unaffected.
--- Generated by Coder Agents on behalf of @designertyler. --- site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx | 3 +-- site/src/pages/WorkspacesPage/WorkspacesPageView.tsx | 4 ++-- site/src/pages/WorkspacesPage/WorkspacesTable.tsx | 6 +++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx index e2773d60820..81e461fb6a3 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx @@ -1,6 +1,5 @@ import { BanIcon, - CloudIcon, PlayIcon, PowerIcon, RotateCcwIcon, @@ -41,7 +40,7 @@ export const UpdateButton: FC = ({ disabled={loading} onClick={() => handleAction()} > - {requireActiveVersion ? : } + {requireActiveVersion ? : } {loading ? ( <>Updating… ) : isRunning ? ( diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx index aa5c4da077e..a45699e6449 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx @@ -1,4 +1,4 @@ -import { CloudIcon, PlayIcon, SquareIcon, TrashIcon } from "lucide-react"; +import { PlayIcon, RotateCcwIcon, SquareIcon, TrashIcon } from "lucide-react"; import type { FC } from "react"; import type { UseQueryResult } from "react-query"; import { hasError, isApiValidationError } from "#/api/errors"; @@ -171,7 +171,7 @@ export const WorkspacesPageView: FC = ({ - {" "} diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index 90ac6a624bf..fac2c619d66 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -1,12 +1,12 @@ import { BanIcon, CircleAlertIcon, - CloudIcon, EllipsisVerticalIcon, ExternalLinkIcon, FileIcon, PlayIcon, RefreshCcwIcon, + RotateCcwIcon, SquareTerminalIcon, StarIcon, } from "lucide-react"; @@ -515,7 +515,7 @@ const WorkspaceActionsCell: FC = ({ isLoading={workspaceUpdate.isUpdating} label="Update and start workspace" > - + @@ -541,7 +541,7 @@ const WorkspaceActionsCell: FC = ({ isLoading={workspaceUpdate.isUpdating} label="Update and restart workspace" > - +