From 493b1e42aa2c115bdf0f2d5978f0db6ea61f161a Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Wed, 4 Mar 2026 23:41:23 -0800 Subject: [PATCH] fix: enable no-deprecated-classes tailwind lint rule (#9417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Enable `better-tailwindcss/no-deprecated-classes` lint rule and auto-fix all 103 violations across 65 files. First PR in a stacked series for #9300. ## Changes - **What**: Replace deprecated Tailwind v3 classes with v4 equivalents: - `rounded` → `rounded-sm` (85) - `flex-shrink-0` → `shrink-0` (16) - `flex-grow` → `grow` (2) - Enable `no-deprecated-classes` as `'error'` in eslint config - Update one test asserting on `'rounded'` class string ## Review Focus Mechanical auto-fix PR — all changes produced by `eslint --fix`. No visual or behavioral changes (Tailwind v4 aliases these classes identically). Fixes #9300 (partial — 1 of 3 rules) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-9417-fix-enable-no-deprecated-classes-tailwind-lint-rule-31a6d73d3650819eaef4cf8ad84fb186) by [Unito](https://www.unito.io) Co-authored-by: Alexander Brown --- eslint.config.ts | 3 +-- .../bottomPanel/tabs/shortcuts/ShortcutsList.vue | 4 ++-- src/components/common/BadgePill.vue | 2 +- src/components/common/FormImageUpload.vue | 2 +- src/components/common/SearchBox.vue | 2 +- src/components/common/TreeExplorerV2Node.vue | 2 +- .../widget/WorkflowTemplateSelectorDialog.vue | 10 +++++----- .../dialog/content/MissingNodesContent.vue | 4 ++-- .../content/TopUpCreditsDialogContentLegacy.vue | 2 +- .../CancelSubscriptionDialogContent.vue | 2 +- src/components/graph/CanvasModeSelector.vue | 2 +- src/components/graph/NodeContextMenu.vue | 2 +- src/components/graph/modals/ZoomControlsModal.vue | 10 +++++----- .../graph/selectionToolbox/ColorPickerMenu.vue | 6 +++--- .../helpcenter/HelpCenterMenuContent.vue | 2 +- src/components/input/MultiSelect.vue | 2 +- src/components/input/SingleSelect.vue | 2 +- src/components/queue/job/JobDetailsPopover.vue | 2 +- src/components/queue/job/QueueAssetPreview.vue | 2 +- .../rightSidePanel/parameters/WidgetActions.vue | 8 ++++---- .../rightSidePanel/settings/TabGlobalSettings.vue | 2 +- .../rightSidePanel/subgraph/SubgraphEditor.vue | 2 +- .../rightSidePanel/subgraph/SubgraphNodeWidget.vue | 2 +- .../searchbox/v2/NodeSearchCategorySidebar.vue | 2 +- .../searchbox/v2/NodeSearchCategoryTreeNode.vue | 2 +- src/components/searchbox/v2/NodeSearchListItem.vue | 14 +++++++------- src/components/sidebar/ComfyMenuButton.vue | 2 +- src/components/sidebar/SideToolbar.vue | 2 +- src/components/toast/ProgressToastItem.vue | 2 +- src/components/ui/select/SelectItem.vue | 2 +- .../ui/stepper/FormattedNumberStepper.vue | 2 +- src/platform/assets/components/AssetBadgeGroup.vue | 2 +- src/platform/assets/components/Media3DTop.vue | 2 +- src/platform/assets/components/MediaAssetCard.vue | 10 ++++++---- .../assets/components/MediaAssetFilterMenu.vue | 2 +- src/platform/assets/components/MediaAudioTop.vue | 2 +- src/platform/assets/components/MediaImageTop.vue | 2 +- src/platform/assets/components/MediaOtherTop.vue | 2 +- src/platform/assets/components/MediaTextTop.vue | 2 +- src/platform/assets/components/MediaVideoTop.vue | 2 +- .../components/ModelImportProgressDialog.vue | 8 ++++---- .../assets/components/UploadModelConfirmation.vue | 2 +- .../assets/components/UploadModelDialog.vue | 2 +- .../assets/components/UploadModelProgress.vue | 4 ++-- .../cloud/onboarding/CloudAuthTimeoutView.vue | 6 +++--- src/platform/secrets/components/SecretListItem.vue | 2 +- .../TopUpCreditsDialogContentWorkspace.vue | 2 +- .../components/WorkspaceSwitcherPopover.vue | 10 +++++----- .../dialogs/CreateWorkspaceDialogContent.vue | 2 +- .../dialogs/DeleteWorkspaceDialogContent.vue | 2 +- .../dialogs/EditWorkspaceDialogContent.vue | 2 +- .../dialogs/InviteMemberDialogContent.vue | 2 +- .../dialogs/InviteMemberUpsellDialogContent.vue | 2 +- .../dialogs/LeaveWorkspaceDialogContent.vue | 2 +- .../dialogs/RemoveMemberDialogContent.vue | 2 +- .../dialogs/RevokeInviteDialogContent.vue | 2 +- .../extensions/linearMode/LinearWelcome.vue | 2 +- .../widgets/components/ValueControlPopover.vue | 2 +- .../vueNodes/widgets/components/WidgetChart.vue | 2 +- .../widgets/components/WidgetInputNumberSlider.vue | 2 +- .../components/audio/AudioPreviewPlayer.vue | 6 +++--- .../components/form/FormSelectButton.test.ts | 2 +- .../widgets/components/form/FormSelectButton.vue | 2 +- .../components/form/dropdown/FormDropdownInput.vue | 2 +- .../components/manager/infoPanel/MarkdownText.vue | 2 +- .../manager/infoPanel/tabs/WarningTabPanel.vue | 5 ++++- 66 files changed, 107 insertions(+), 103 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index 083f373840..199c7d91b7 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -131,8 +131,7 @@ export default defineConfig([ // Off: large batch change (v3→v4 renames like rounded→rounded-sm), // enable and apply with `eslint --fix` in a follow-up PR 'better-tailwindcss/enforce-canonical-classes': 'off', - // Off: large batch change, enable and apply with `eslint --fix` - 'better-tailwindcss/no-deprecated-classes': 'off' + 'better-tailwindcss/no-deprecated-classes': 'error' } }, // Disables ESLint rules that conflict with formatters diff --git a/src/components/bottomPanel/tabs/shortcuts/ShortcutsList.vue b/src/components/bottomPanel/tabs/shortcuts/ShortcutsList.vue index 3938facfb6..b9a9ff6894 100644 --- a/src/components/bottomPanel/tabs/shortcuts/ShortcutsList.vue +++ b/src/components/bottomPanel/tabs/shortcuts/ShortcutsList.vue @@ -19,7 +19,7 @@
@@ -35,7 +35,7 @@ {{ formatKey(key) }} diff --git a/src/components/common/BadgePill.vue b/src/components/common/BadgePill.vue index 4c2cb8cf92..77c13e6f84 100644 --- a/src/components/common/BadgePill.vue +++ b/src/components/common/BadgePill.vue @@ -2,7 +2,7 @@
{ if (showBorder) { return cn( - 'rounded p-2 border border-solid border-border-default box-border', + 'rounded-sm p-2 border border-solid border-border-default box-border', isLarge.value ? 'h-10' : 'h-8' ) } diff --git a/src/components/common/TreeExplorerV2Node.vue b/src/components/common/TreeExplorerV2Node.vue index 6a9849948a..4c65dd0936 100644 --- a/src/components/common/TreeExplorerV2Node.vue +++ b/src/components/common/TreeExplorerV2Node.vue @@ -27,7 +27,7 @@