Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions site/src/components/BuildIcon/BuildIcon.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { WorkspaceTransition } from "api/typesGenerated";
import { PlayIcon, SquareIcon, TrashIcon } from "lucide-react";
import { PauseIcon, PlayIcon, TrashIcon } from "lucide-react";
import type { ComponentProps } from "react";

type SVGIcon = typeof PlayIcon;
Expand All @@ -8,7 +8,7 @@ type SVGIconProps = ComponentProps<SVGIcon>;

const iconByTransition: Record<WorkspaceTransition, SVGIcon> = {
start: PlayIcon,
stop: SquareIcon,
stop: PauseIcon,
delete: TrashIcon,
};

Expand Down
4 changes: 2 additions & 2 deletions site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
} from "components/Tooltip/Tooltip";
import {
BanIcon,
CircleStopIcon,
CloudIcon,
PauseIcon,
Copy link

Copilot AI Dec 8, 2025

Choose a reason for hiding this comment

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

The pause icon is semantically incorrect for the "Stop" action. A pause suggests a temporary suspension that can be quickly resumed, while stop suggests a full shutdown. This creates a semantic mismatch between the icon (pause) and the button label ("Stop"). Consider either:

  1. Keeping the stop icon (SquareIcon or CircleStopIcon) for semantic accuracy, or
  2. If pause is the correct semantic, update the button label to "Pause" to match the icon

Additionally, there are other locations in the codebase still using SquareIcon for stop actions (WorkspacesPageView.tsx line 178, BuildIcon.tsx line 11, utils/workspace.tsx line 244), creating an inconsistent experience.

Suggested change
PauseIcon,
SquareIcon,

Copilot uses AI. Check for mistakes.
PlayIcon,
PowerIcon,
RotateCcwIcon,
Expand Down Expand Up @@ -130,7 +130,7 @@ export const StopButton: FC<ActionButtonProps> = ({
onClick={() => handleAction()}
data-testid="workspace-stop-button"
>
<CircleStopIcon />
<PauseIcon />
{loading ? <>Stopping&hellip;</> : "Stop"}
</TopbarButton>
);
Expand Down
4 changes: 2 additions & 2 deletions site/src/pages/WorkspacesPage/WorkspacesPageView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import { TableToolbar } from "components/TableToolbar/TableToolbar";
import {
ChevronDownIcon,
CloudIcon,
PauseIcon,
PlayIcon,
SquareIcon,
TrashIcon,
} from "lucide-react";
import { WorkspacesTable } from "pages/WorkspacesPage/WorkspacesTable";
Expand Down Expand Up @@ -175,7 +175,7 @@ export const WorkspacesPageView: FC<WorkspacesPageViewProps> = ({
}
onClick={onBatchStopTransition}
>
<SquareIcon /> Stop
<PauseIcon /> Stop
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem onClick={onBatchUpdateTransition}>
Expand Down
4 changes: 2 additions & 2 deletions site/src/pages/WorkspacesPage/WorkspacesTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ import {
EllipsisVertical,
ExternalLinkIcon,
FileIcon,
PauseIcon,
Copy link

Copilot AI Dec 8, 2025

Choose a reason for hiding this comment

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

Inconsistent icon usage for stop actions across the codebase. While this file now uses PauseIcon, there are several other locations still using SquareIcon for the same stop action:

  • WorkspacesPageView.tsx (line 178): Bulk actions menu uses <SquareIcon /> Stop
  • BuildIcon.tsx (line 11): Maps stop transition to SquareIcon
  • utils/workspace.tsx (line 244): Displays SquareIcon for "stopped" status

This creates an inconsistent user experience where different parts of the UI use different icons for the same action. Consider updating all stop-related icons consistently across the entire codebase.

Copilot uses AI. Check for mistakes.
PlayIcon,
RefreshCcwIcon,
SquareIcon,
SquareTerminalIcon,
StarIcon,
} from "lucide-react";
Expand Down Expand Up @@ -481,7 +481,7 @@ const WorkspaceActionsCell: FC<WorkspaceActionsCellProps> = ({
isLoading={stopWorkspaceMutation.isPending}
label="Stop workspace"
>
<SquareIcon />
<PauseIcon />
</PrimaryAction>
)}

Expand Down
4 changes: 2 additions & 2 deletions site/src/utils/workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import utc from "dayjs/plugin/utc";
import {
CircleAlertIcon,
HourglassIcon,
PauseIcon,
PlayIcon,
SquareIcon,
} from "lucide-react";
import semver from "semver";
import { getPendingStatusLabel } from "./provisionerJob";
Expand Down Expand Up @@ -241,7 +241,7 @@ export const getDisplayWorkspaceStatus = (
return {
type: "inactive",
text: "Stopped",
icon: <SquareIcon />,
icon: <PauseIcon />,
} as const;
case "deleting":
return {
Expand Down
Loading