Skip to content

Harden MUI 4 → BUI codemods and expand recipe coverage#136

Open
schultzp2020 wants to merge 11 commits into
mainfrom
feat/mui4-to-bui-hardening
Open

Harden MUI 4 → BUI codemods and expand recipe coverage#136
schultzp2020 wants to merge 11 commits into
mainfrom
feat/mui4-to-bui-hardening

Conversation

@schultzp2020

Copy link
Copy Markdown
Contributor

Summary

  • Fix P0 transform bugs: valid Text variants, Paper never emits removed Surface (bare → Box bg="neutral", card-like → Card), IconButton defaults to tertiary, Button omitted-variant → tertiary
  • Improve Button (iconStart/ButtonLink/onPress), TextField (TextArea/Password/Number), Menu vs Popover heuristic, standalone Checkbox
  • Add packages: Switch, Avatar, Skeleton, Card, Autocomplete→Combobox, Link (skips core-components); wire into recipe with workflow.local.yaml for pre-publish dry-runs
  • Thin per-package READMEs, changesets (patch bugfixes / minor additive + new), adversarial-review fixes (package name length, Link component TODO, layout post-Card children, Select MenuItem false positive)

Test plan

  • yarn test (full monorepo)
  • yarn lint
  • yarn check:changed vs origin/main
  • Dry-run local recipe on ../backstage/packages/core-components and plugins/user-settings (workflow.local.yaml --dry-run --no-interactive)
  • Spot-check recipe README order + out-of-scope notes
  • After merge/publish: end-to-end registry recipe dry-run

Made with Cursor

schultzp2020 and others added 7 commits July 22, 2026 17:09
Fix invalid Text variants, remove dead Surface Paper mapping, and improve
button/field/menu transforms. Add Switch, Avatar, Skeleton, Card,
Autocomplete, and Link packages plus a local recipe workflow for dry-runs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Tighten Link coexistence/path skips, emit Paper default-elevation TODOs and outlined→secondary metrics, and document operator expectations after a full backstage dry-run.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace regex source rewrites in dialog, autocomplete, tabs, textfield, select, and styles CSS merge with ast-grep walks and range-based edits.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens and expands the MUI 4 → BUI codemod suite by fixing several transform correctness issues, adding new component codemods, and updating the end-to-end migration recipe (including a local dry-run workflow).

Changes:

  • Fix and harden existing transforms (Typography→Text variant mapping, Paper heuristic, IconButton/Button defaults + handler rewrites, AST-first rewrites in multiple codemods).
  • Add new MUI→BUI codemod packages (Avatar, Skeleton, Card, Link, Autocomplete→Combobox/SearchAutocomplete, Switch) and wire them into the recipe workflows.
  • Add/refresh operator-facing documentation (thin per-package READMEs) and changesets for release management.

Reviewed changes

Copilot reviewed 280 out of 284 changed files in this pull request and generated no comments.

Show a summary per file
File Description
yarn.lock Add new workspace codemod packages to lockfile.
README.md List new misc codemods and update descriptions.
codemods/v1.51.0/render-test-app-nav-migration/scripts/codemod.ts Use generic parse<TSX>(...) helper pattern.
codemods/v1.50.0/migrate-permissioned-route/scripts/codemod.ts Use generic parse<TSX>(...) helper pattern.
codemods/misc/remove-mui-dependencies/README.md Add operator README stub for cleanup codemod.
codemods/misc/README.md Update recommended ordering + local dry-run notes.
codemods/misc/mui4-to-bui-migration-recipe/workflow.yaml Add new codemods to published recipe order.
codemods/misc/mui4-to-bui-migration-recipe/workflow.local.yaml Add local-path workflow for pre-publish dry-runs.
codemods/misc/mui4-to-bui-migration-recipe/scripts/validate-workflows.sh Validate both registry and local workflows.
codemods/misc/mui4-to-bui-migration-recipe/package.json Run validation script in tests.
codemods/misc/mui4-to-bui-migration-recipe/.npmignore Ensure workflow.local.yaml is not published.
codemods/misc/migrate-mui-typography-to-text/tests/preserve-children/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-import/input.tsx Update fixture to reflect new variant mapping behavior.
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-import/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/named-barrel-import/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/merge-existing-bui/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/gutter-bottom-dropped/expected.tsx Update expected mapping for gutterBottom case.
codemods/misc/migrate-mui-typography-to-text/tests/extra-props-preserved/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/dialog-content-text/expected.tsx Update expected heading variant mapping.
codemods/misc/migrate-mui-typography-to-text/tests/component-to-as/expected.tsx Update expected variant mapping.
codemods/misc/migrate-mui-typography-to-text/scripts/codemod.ts Revise Typography→Text variant map to valid TextVariants.
codemods/misc/migrate-mui-typography-to-text/README.md Add operator README stub for Typography→Text codemod.
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/README.md Add operator README stub for Tooltip codemod.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/password-field/metrics.json Add PasswordField fixture metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/password-field/input.tsx Add password TextField fixture.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/password-field/expected.tsx Expect PasswordField output + onChange rewrite.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/partial-barrel-import/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/number-field/metrics.json Add NumberField fixture metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/number-field/input.tsx Add number TextField fixture.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/number-field/expected.tsx Expect NumberField output + onChange rewrite.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/named-barrel-import/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/multiline/metrics.json Add TextAreaField fixture metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/multiline/input.tsx Add multiline TextField fixture.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/multiline/expected.tsx Expect TextAreaField output.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/multiline-todo/expected.tsx Remove obsolete TODO-based expected output fixture.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/merge-existing-bui/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/disabled-and-fullwidth/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/basic-controlled/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/tests/aliased-import/metrics.json Include migrated component name in metrics.
codemods/misc/migrate-mui-textfield-to-bui-textfield/README.md Add operator README stub for TextField codemod.
codemods/misc/migrate-mui-textfield-to-bui-textfield/codemod.yaml Update package description for new coverage.
codemods/misc/migrate-mui-tabs-to-bui-tabs/scripts/codemod.ts Switch to AST-first identifier rewriting for onChange handler transforms.
codemods/misc/migrate-mui-tabs-to-bui-tabs/README.md Add operator README stub for Tabs codemod.
codemods/misc/migrate-mui-switch-to-bui-switch/workflow.yaml Add workflow for Switch codemod.
codemods/misc/migrate-mui-switch-to-bui-switch/tsconfig.json Add TS config for Switch codemod package.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/noop-no-import/input.tsx Add Switch noop fixture.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/noop-no-import/expected.tsx Add Switch noop expected output.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/named-barrel-import/metrics.json Add barrel-import Switch fixture metrics.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/named-barrel-import/input.tsx Add FormControlLabel+Switch fixture.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/named-barrel-import/expected.tsx Expect label + prop remaps in output.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/merge-existing-bui/metrics.json Add merge-into-existing import fixture metrics.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/merge-existing-bui/input.tsx Add merge-into-existing import fixture.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/merge-existing-bui/expected.tsx Expect merged BUI import output.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/happy-path-standalone/metrics.json Add happy-path Switch fixture metrics.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/happy-path-standalone/input.tsx Add standalone Switch fixture.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/happy-path-standalone/expected.tsx Expect prop renames in output.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/core-import/metrics.json Add deep core import fixture metrics.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/core-import/input.tsx Add deep core import fixture.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/core-import/expected.tsx Expect deep import replacement.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/color-todo/metrics.json Add TODO fixture for unsupported Switch color prop.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/color-todo/input.tsx Add unsupported-prop fixture input.
codemods/misc/migrate-mui-switch-to-bui-switch/tests/color-todo/expected.tsx Expect TODO insertion (no transform).
codemods/misc/migrate-mui-switch-to-bui-switch/README.md Add operator README stub for Switch codemod.
codemods/misc/migrate-mui-switch-to-bui-switch/package.json Add Switch codemod package manifest.
codemods/misc/migrate-mui-switch-to-bui-switch/codemod.yaml Add Switch codemod registry metadata.
codemods/misc/migrate-mui-switch-to-bui-switch/CHANGELOG.md Add Switch package changelog.
codemods/misc/migrate-mui-styles-to-bui-css-modules/scripts/codemod.ts Replace regex CSS parsing with AST-based CSS parsing/merging.
codemods/misc/migrate-mui-styles-to-bui-css-modules/README.md Add operator README stub + clarify coverage/TODOs.
codemods/misc/migrate-mui-slider-to-bui-slider/README.md Add operator README stub for Slider codemod.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/workflow.yaml Add workflow for Skeleton codemod.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tsconfig.json Add TS config for Skeleton codemod package.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/noop-no-import/input.tsx Add Skeleton noop fixture.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/noop-no-import/expected.tsx Add Skeleton noop expected output.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/named-barrel-import/metrics.json Add barrel import fixture metrics.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/named-barrel-import/input.tsx Add barrel import fixture input.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/named-barrel-import/expected.tsx Expect BUI import + usage output.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/merge-existing-bui/metrics.json Add merge-existing import fixture metrics.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/merge-existing-bui/input.tsx Add merge-existing import fixture.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/merge-existing-bui/expected.tsx Expect merged BUI import output.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/happy-path-rect/metrics.json Add rectangle variant fixture metrics.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/happy-path-rect/input.tsx Add rectangle variant fixture input.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/happy-path-rect/expected.tsx Expect variant drop/normalize output.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/core-import/metrics.json Add deep import + circle variant fixture metrics.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/core-import/input.tsx Add deep import fixture input.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/core-import/expected.tsx Expect variant="circle"rounded.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/animation-todo/metrics.json Add TODO fixture for unsupported animation prop.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/animation-todo/input.tsx Add unsupported-prop fixture input.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/tests/animation-todo/expected.tsx Expect TODO insertion (no transform).
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/README.md Add operator README stub for Skeleton codemod.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/package.json Add Skeleton codemod package manifest.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/codemod.yaml Add Skeleton codemod registry metadata.
codemods/misc/migrate-mui-skeleton-to-bui-skeleton/CHANGELOG.md Add Skeleton package changelog.
codemods/misc/migrate-mui-select-family-to-bui-select/scripts/codemod.ts Rewrite onChange handler transform to be AST-first (no regex).
codemods/misc/migrate-mui-select-family-to-bui-select/README.md Add operator README stub for Select codemod.
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-form-control-label-checkbox/metrics.json Add standalone checkbox fixture metrics (via FormControlLabel).
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-form-control-label-checkbox/input.tsx Add standalone checkbox fixture input.
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-form-control-label-checkbox/expected.tsx Expect BUI Checkbox with children label.
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-checkbox/metrics.json Add standalone checkbox fixture metrics (direct Checkbox).
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-checkbox/input.tsx Add standalone checkbox fixture input.
codemods/misc/migrate-mui-radio-checkbox-to-bui/tests/standalone-checkbox/expected.tsx Expect direct prop renames.
codemods/misc/migrate-mui-radio-checkbox-to-bui/scripts/codemod.ts Add standalone Checkbox/FormControlLabel handling.
codemods/misc/migrate-mui-radio-checkbox-to-bui/README.md Add operator README stub for radio/checkbox codemod.
codemods/misc/migrate-mui-radio-checkbox-to-bui/codemod.yaml Update package description for new coverage.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-select-menuitem-noop/metrics.json Add metrics for popover→popover path.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-select-menuitem-noop/input.tsx Add fixture input.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-select-menuitem-noop/expected.tsx Expect Popover rewritten under DialogTrigger.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-menu-with-trigger/metrics.json Add metrics for popover→menu heuristic.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-menu-with-trigger/input.tsx Add fixture input.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-menu-with-trigger/expected.tsx Expect MenuTrigger/Menu output.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-with-trigger/metrics.json Add metrics for popover content conversion.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-with-trigger/input.tsx Add fixture input.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-with-trigger/expected.tsx Expect DialogTrigger+Popover output.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-no-trigger/metrics.json Add metrics for TODO case (no trigger).
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-no-trigger/input.tsx Add fixture input.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/tests/popover-content-no-trigger/expected.tsx Expect TODO insertion (no safe rewrite).
codemods/misc/migrate-mui-menu-popover-to-bui-menu/README.md Add operator README stub for Menu/Popover codemod.
codemods/misc/migrate-mui-menu-popover-to-bui-menu/codemod.yaml Update package description for heuristic behavior.
codemods/misc/migrate-mui-list-family-to-bui-list/README.md Add operator README stub for List codemod.
codemods/misc/migrate-mui-link-to-bui-link/workflow.yaml Add workflow for Link codemod.
codemods/misc/migrate-mui-link-to-bui-link/tsconfig.json Add TS config for Link codemod package.
codemods/misc/migrate-mui-link-to-bui-link/tests/underline-none-standalone/metrics.json Add fixture metrics for underline→standalone mapping.
codemods/misc/migrate-mui-link-to-bui-link/tests/underline-none-standalone/input.tsx Add fixture input.
codemods/misc/migrate-mui-link-to-bui-link/tests/underline-none-standalone/expected.tsx Expect standalone prop in output.
codemods/misc/migrate-mui-link-to-bui-link/tests/skip-core-components/metrics.json Add fixture metrics for core-components coexistence.
codemods/misc/migrate-mui-link-to-bui-link/tests/skip-core-components/input.tsx Add fixture input.
codemods/misc/migrate-mui-link-to-bui-link/tests/skip-core-components/expected.tsx Expect alias import to avoid name conflict.
codemods/misc/migrate-mui-link-to-bui-link/tests/simple-link/metrics.json Add simple migration fixture metrics.
codemods/misc/migrate-mui-link-to-bui-link/tests/simple-link/input.tsx Add fixture input.
codemods/misc/migrate-mui-link-to-bui-link/tests/simple-link/expected.tsx Expect basic migration output.
codemods/misc/migrate-mui-link-to-bui-link/tests/noop-no-import/input.tsx Add noop fixture input.
codemods/misc/migrate-mui-link-to-bui-link/tests/noop-no-import/expected.tsx Add noop fixture expected output.
codemods/misc/migrate-mui-link-to-bui-link/tests/deep-core-link-alias/metrics.json Add deep core-components import coexistence metrics.
codemods/misc/migrate-mui-link-to-bui-link/tests/deep-core-link-alias/input.tsx Add fixture input.
codemods/misc/migrate-mui-link-to-bui-link/tests/deep-core-link-alias/expected.tsx Expect aliasing output.
codemods/misc/migrate-mui-link-to-bui-link/tests/component-todo/metrics.json Fix metrics namespace for Link TODO fixture.
codemods/misc/migrate-mui-link-to-bui-link/tests/component-todo/input.tsx Add TODO fixture for router polymorphic link.
codemods/misc/migrate-mui-link-to-bui-link/tests/component-todo/expected.tsx Expect TODO insertion (no safe rewrite).
codemods/misc/migrate-mui-link-to-bui-link/README.md Add operator README stub for Link codemod.
codemods/misc/migrate-mui-link-to-bui-link/package.json Add Link codemod package manifest.
codemods/misc/migrate-mui-link-to-bui-link/codemod.yaml Add Link codemod registry metadata.
codemods/misc/migrate-mui-link-to-bui-link/CHANGELOG.md Add Link package changelog.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-simple/metrics.json Update metrics for Paper→Box + TODO behavior.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-simple/expected.tsx Expect Box output + default-elevation TODO.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like/metrics.json Add Paper→Card fixture metrics.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like/input.tsx Add Paper card-like fixture input.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like/expected.tsx Expect Card output for card-like Paper.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like-bui-children/metrics.json Add fixture metrics for card-like detection with BUI Card* children.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like-bui-children/input.tsx Add fixture input.
codemods/misc/migrate-mui-layout-to-bui-layout/tests/paper-card-like-bui-children/expected.tsx Expect Card wrapper + merged imports.
codemods/misc/migrate-mui-layout-to-bui-layout/scripts/codemod.ts Implement Paper heuristic (Box/Card + TODO), remove Surface output.
codemods/misc/migrate-mui-layout-to-bui-layout/README.md Add operator README stub describing Paper heuristic.
codemods/misc/migrate-mui-icons-to-remix-icons/README.md Add operator README stub for Icons codemod.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/spread-props/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/named-barrel-import/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/merge-existing-bui/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/dropped-props/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/disabled-boolean/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-secondary/metrics.json Add color mapping metrics.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-secondary/input.tsx Add color mapping fixture input.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-secondary/expected.tsx Expect color→variant mapping output.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-primary/metrics.json Add color mapping metrics.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-primary/input.tsx Add color mapping fixture input.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/color-primary/expected.tsx Expect color→variant mapping output.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/className-preserved/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/basic-migration/expected.tsx Expect default variant insertion.
codemods/misc/migrate-mui-icon-button-to-button-icon/scripts/codemod.ts Map IconButton color→variant + default to tertiary; onClick→onPress.
codemods/misc/migrate-mui-icon-button-to-button-icon/README.md Add operator README stub for IconButton codemod.
codemods/misc/migrate-mui-dialog-to-bui-dialog/scripts/codemod.ts Switch footer close button detection/transform to AST-first.
codemods/misc/migrate-mui-dialog-to-bui-dialog/README.md Add operator README stub for Dialog codemod.
codemods/misc/migrate-mui-chip-to-tag/README.md Add operator README stub for Chip→Tag codemod.
codemods/misc/migrate-mui-card-to-bui-card/workflow.yaml Add workflow for Card codemod.
codemods/misc/migrate-mui-card-to-bui-card/tsconfig.json Add TS config for Card codemod package.
codemods/misc/migrate-mui-card-to-bui-card/tests/simple-card/metrics.json Add basic Card fixture metrics.
codemods/misc/migrate-mui-card-to-bui-card/tests/simple-card/input.tsx Add fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/simple-card/expected.tsx Expect CardBody migration output.
codemods/misc/migrate-mui-card-to-bui-card/tests/noop-no-import/input.tsx Add noop fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/noop-no-import/expected.tsx Add noop fixture expected output.
codemods/misc/migrate-mui-card-to-bui-card/tests/named-barrel-import/metrics.json Add barrel import fixture metrics.
codemods/misc/migrate-mui-card-to-bui-card/tests/named-barrel-import/input.tsx Add fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/named-barrel-import/expected.tsx Expect mixed-import migration output.
codemods/misc/migrate-mui-card-to-bui-card/tests/media-todo/metrics.json Add TODO fixture metrics for CardMedia.
codemods/misc/migrate-mui-card-to-bui-card/tests/media-todo/input.tsx Add CardMedia fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/media-todo/expected.tsx Expect TODO insertion for CardMedia.
codemods/misc/migrate-mui-card-to-bui-card/tests/header-content-actions/metrics.json Add CardHeader/CardFooter fixtures metrics.
codemods/misc/migrate-mui-card-to-bui-card/tests/header-content-actions/input.tsx Add fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/header-content-actions/expected.tsx Expect CardHeader/CardFooter migration output.
codemods/misc/migrate-mui-card-to-bui-card/tests/complex-header-todo/metrics.json Add TODO fixture metrics for complex CardHeader.
codemods/misc/migrate-mui-card-to-bui-card/tests/complex-header-todo/input.tsx Add fixture input.
codemods/misc/migrate-mui-card-to-bui-card/tests/complex-header-todo/expected.tsx Expect TODO insertion for complex CardHeader.
codemods/misc/migrate-mui-card-to-bui-card/README.md Add operator README stub for Card codemod.
codemods/misc/migrate-mui-card-to-bui-card/package.json Add Card codemod package manifest.
codemods/misc/migrate-mui-card-to-bui-card/codemod.yaml Add Card codemod registry metadata.
codemods/misc/migrate-mui-card-to-bui-card/CHANGELOG.md Add Card package changelog.
codemods/misc/migrate-mui-button-to-bui-button/tests/text-button/metrics.json Add onClick→onPress metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/text-button/expected.tsx Expect onPress output.
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon/metrics.json Add startIcon→iconStart fixture metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon/input.tsx Add startIcon fixture input.
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon/expected.tsx Expect iconStart output + variant mapping.
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon-todo/expected.tsx Remove obsolete TODO-based expected output fixture.
codemods/misc/migrate-mui-button-to-bui-button/tests/self-closing/metrics.json Add outlined→secondary metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/outlined-button/metrics.json Add onClick→onPress + outlined→secondary metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/outlined-button/expected.tsx Expect onPress output.
codemods/misc/migrate-mui-button-to-bui-button/tests/no-variant/metrics.json Add onClick→onPress metrics for default-variant case.
codemods/misc/migrate-mui-button-to-bui-button/tests/no-variant/expected.tsx Expect default tertiary variant + onPress output.
codemods/misc/migrate-mui-button-to-bui-button/tests/named-barrel-import/metrics.json Add outlined→secondary metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/merge-existing-bui/metrics.json Add onClick→onPress metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/merge-existing-bui/expected.tsx Expect onPress output.
codemods/misc/migrate-mui-button-to-bui-button/tests/href-button-link/metrics.json Add ButtonLink fixture metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/href-button-link/input.tsx Add href Button fixture input.
codemods/misc/migrate-mui-button-to-bui-button/tests/href-button-link/expected.tsx Expect ButtonLink output.
codemods/misc/migrate-mui-button-to-bui-button/tests/end-icon/metrics.json Add endIcon→iconEnd fixture metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/end-icon/input.tsx Add endIcon fixture input.
codemods/misc/migrate-mui-button-to-bui-button/tests/end-icon/expected.tsx Expect iconEnd output + variant mapping.
codemods/misc/migrate-mui-button-to-bui-button/tests/contained-button/metrics.json Add onClick→onPress metrics.
codemods/misc/migrate-mui-button-to-bui-button/tests/contained-button/expected.tsx Expect onPress output.
codemods/misc/migrate-mui-button-to-bui-button/README.md Add operator README stub for Button/ButtonLink codemod.
codemods/misc/migrate-mui-button-to-bui-button/codemod.yaml Update package description for new coverage.
codemods/misc/migrate-mui-bootstrap-to-bui/README.md Add operator README stub for bootstrap codemod.
codemods/misc/migrate-mui-avatar-to-bui-avatar/workflow.yaml Add workflow for Avatar codemod.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tsconfig.json Add TS config for Avatar codemod package.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/noop-no-import/input.tsx Add Avatar noop fixture.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/noop-no-import/expected.tsx Add Avatar noop expected output.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/named-barrel-import/metrics.json Add Avatar fixture metrics.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/named-barrel-import/input.tsx Add fixture input.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/named-barrel-import/expected.tsx Expect alt→name + import rewrite.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/missing-name-todo/metrics.json Fix metrics namespace for Avatar TODO fixture.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/missing-name-todo/input.tsx Add missing-name fixture input.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/missing-name-todo/expected.tsx Expect TODO insertion (no safe rewrite).
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/merge-existing-bui/metrics.json Add merge-existing import fixture metrics.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/merge-existing-bui/input.tsx Add fixture input.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/merge-existing-bui/expected.tsx Expect merged BUI import output.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/happy-path-alt-as-name/metrics.json Add alt-as-name fixture metrics.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/happy-path-alt-as-name/input.tsx Add fixture input.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/happy-path-alt-as-name/expected.tsx Expect name + src synthesis output.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/core-import/metrics.json Add size mapping fixture metrics.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/core-import/input.tsx Add style width/height fixture input.
codemods/misc/migrate-mui-avatar-to-bui-avatar/tests/core-import/expected.tsx Expect size mapping output.
codemods/misc/migrate-mui-avatar-to-bui-avatar/README.md Add operator README stub for Avatar codemod.
codemods/misc/migrate-mui-avatar-to-bui-avatar/package.json Add Avatar codemod package manifest.
codemods/misc/migrate-mui-avatar-to-bui-avatar/codemod.yaml Add Avatar codemod registry metadata.
codemods/misc/migrate-mui-avatar-to-bui-avatar/CHANGELOG.md Add Avatar package changelog.
codemods/misc/migrate-mui-autocomplete-to-combobox/workflow.yaml Add workflow for Autocomplete codemod.
codemods/misc/migrate-mui-autocomplete-to-combobox/tsconfig.json Add TS config for Autocomplete codemod package.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/search-autocomplete/metrics.json Add SearchAutocomplete heuristic fixture metrics.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/search-autocomplete/input.tsx Add fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/search-autocomplete/expected.tsx Expect SearchAutocomplete output.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/research-label-todo/metrics.json Add ambiguous heuristic TODO fixture metrics.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/research-label-todo/input.tsx Add fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/research-label-todo/expected.tsx Expect TODO insertion (ambiguous).
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/object-options-todo/metrics.json Add object options TODO fixture metrics.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/object-options-todo/input.tsx Add fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/object-options-todo/expected.tsx Expect TODO insertion (object options).
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/noop-no-import/input.tsx Add noop fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/noop-no-import/expected.tsx Add noop fixture expected output.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/combobox-success/metrics.json Add Combobox heuristic fixture metrics.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/combobox-success/input.tsx Add fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/combobox-success/expected.tsx Expect Combobox output.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/ambiguous-todo/metrics.json Add ambiguous TODO fixture metrics.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/ambiguous-todo/input.tsx Add fixture input.
codemods/misc/migrate-mui-autocomplete-to-combobox/tests/ambiguous-todo/expected.tsx Expect TODO insertion (ambiguous).
codemods/misc/migrate-mui-autocomplete-to-combobox/README.md Add operator README stub for Autocomplete heuristic.
codemods/misc/migrate-mui-autocomplete-to-combobox/package.json Add Autocomplete codemod package manifest.
codemods/misc/migrate-mui-autocomplete-to-combobox/codemod.yaml Add Autocomplete codemod registry metadata.
codemods/misc/migrate-mui-autocomplete-to-combobox/CHANGELOG.md Add Autocomplete package changelog.
codemods/misc/migrate-mui-alert-to-bui-alert/README.md Add operator README stub for Alert codemod.
codemods/misc/migrate-mui-accordion-to-bui-accordion/README.md Add operator README stub for Accordion codemod.
.gitignore Update ignore patterns (needs fix).
.changeset/patch-mui4-bui-bugfixes.md Changeset for bugfix transforms.
.changeset/parse-generic-tsx-helpers.md Changeset for TSX parse helper change.
.changeset/minor-mui4-bui-new-packages.md Changeset for new codemod packages + recipe updates.
.changeset/harden-mui4-to-bui-codemods.md Changeset for hardened existing codemods.
.changeset/followup-mui4-bui-review-gaps.md Changeset for follow-up gaps and docs.
.changeset/docs-mui4-bui-readme-stubs.md Changeset for README stub additions.
.changeset/ast-first-mui-helpers.md Changeset for AST-first helper rewrites.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

schultzp2020 and others added 4 commits July 22, 2026 18:00
Emit size="medium" for Button, ButtonIcon, TextField, and Tag when MUI omitted size, so BUI's small default does not silently shrink controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
Emit size="medium" by default for Select/Combobox/SearchAutocomplete, with FormControl and renderInput TextField size fallbacks when the control itself omits size.

Co-authored-by: Cursor <cursoragent@cursor.com>
Fall back to parent FormControl size when TextField omits it, and treat ternary/expression size props as dynamic across TextField, Select, Autocomplete, and Chip.

Co-authored-by: Cursor <cursoragent@cursor.com>
Map h5/h6 onto the BUI title scale and infer as from MUI variant defaults so Text stacks instead of collapsing to inline spans.

Co-authored-by: Cursor <cursoragent@cursor.com>
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