Repository navigation
Adopt Destyler core 0.3.1 - #163
Conversation
Pin every @destyler/* catalog entry to ^0.3.0 and run the Dialog compatibility gate against exact core 0.3.0. Keep Tabs selection callbacks on the core ValueChangeDetails contract (string | null) across Vue, React, Solid, and Svelte. Restore 0.3.0 declarations that published machine, anatomy, and props types as any, without changing those packages' runtime bundles. Node remains >=22.22.3. Nothing is published. Co-authored-by: Elone Hoo <hi@elonehoo.me>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🤖 Review(中文)更新于: 概要:本次更新把所有 上次建议的处理情况
新的建议
结论:这次更新解决了上次最主要的风险(只在仓库内生效的声明补丁),整体方向正确、风险较低。合并前建议等 CI 全部通过,并考虑补上受控 Tabs 用例和更严格的 open 状态断言;第 4、5 点属于小问题。 |
🤖 Review (English)Updated: Summary: This update moves every Status of earlier suggestions
New suggestions
Verdict: This update resolves the main risk from the last review (declaration patches that only applied inside the repo). The direction is right and the risk is low. Before merging, I'd wait for green CI and consider adding the controlled Tabs case and the stricter open-state assertion; points 4 and 5 are minor. |
🤖 レビュー(日本語)更新: 概要:今回の更新では、すべての 前回の指摘への対応状況
新しい提案
結論:今回の更新で、前回最大のリスクだった「リポジトリ内でしか効かない宣言パッチ」は解消されました。方向性は正しく、リスクは低いです。マージ前に CI がすべて通るのを待ち、制御モードの Tabs ケースと、より厳密な open 状態の確認を追加することを検討してください。4・5 点目は軽微な指摘です。 |
Pin every @destyler/* catalog entry to ^0.3.1 and drop the type-only patches that restored 0.3.0 declarations emitted as any. Extend the installed-consumer gate to Popover and Menu open state and Tabs nullable selection. Nothing is published. Co-authored-by: Elone Hoo <hi@elonehoo.me>
Summary
This adopts Destyler core 0.3.1 in the UI workspace. Every
@destyler/*catalog entry is^0.3.1, and the installed-consumer gate pins exact core0.3.1. Public UI package versions stay0.0.1-beta.17. Nothing in this pull request publishes, retags, or releases.Core 0.3.1 restores the
machine,anatomy, and props declarations that 0.3.0 published asany(destyler/destyler v0.3.1). The 18 type-only patches added for 0.3.0 are removed. Storybook,eslint-plugin-react-x, andeslint-plugin-solidpatches stay. Node remains>=22.22.3, the floor core 0.3.0 set (destyler/destyler#360) and 0.3.1 keeps.Tabs
ValueChangeDetails.valueisstring | null(core destyler/destyler#353, migration notes from destyler/destyler#356). Vue is the source of truth. React, Solid, and Svelte follow that contract.Published UI
0.0.1-beta.17wroteopen.controlledkeys that current core ignores (#151). Current source forwards open state by key presence. The compatibility gate now covers Dialog, Popover, and Menu open state, plus deselectable Tabs clearing tonull, on packed Vue, React, Solid, and Svelte consumers.#154 asks for the Svelte Tree branch-trigger migration to be included in the upcoming beta.18 release notes. That note is already prepared in
docs/release-scope.md("Pending note: Svelte Tree branch triggers") andpackages/svelte/README.md("Tree branch triggers"). This pull request does not publish beta.18 and does not close #154.Fixes #151
Changes
Workspace
pnpm-workspace.yaml: every@destyler/*catalog entry, including@destyler/docs, is^0.3.1. The lockfile resolves those ranges to 0.3.1.patches/@destyler__*@0.3.0.patchfor calendar, carousel, checkbox, color-picker, combobox, dialog, dynamic, edit, file-upload, floating-panel, hover-card, menu, popover, radio, select, switch, tooltip, and tour, plus theirpatchedDependenciesentries and the matching section inpatches/PROVENANCE.md.scripts/test-core-compat.mjspins core0.3.1.Vue
packages/vue/src/components/tabs/types.ts:valueChangeuses@destyler/tabsValueChangeDetails(value: string | null).packages/vue/src/components/tabs/test/nullable-contract.types.tschecks that the public change payload matches coreValueChangeDetails, includingnull.React
packages/react/src/components/tabs/examples/Basic.tsx:defaultValueacceptsstring | null.packages/react/src/components/tabs/test/nullable-contract.types.tslocksonValueChangeto coreValueChangeDetails.Solid
packages/solid/src/components/tabs/test/nullable-contract.types.tslocksonValueChangeto coreValueChangeDetails.Svelte
packages/svelte/src/lib/components/tabs/test/nullable-contract.types.tslocksonValueChangeto coreValueChangeDetails.packages/svelte/src/lib/utils/create-machine-props.tsdrops legacy*.controlledkeys.packages/svelte/src/lib/utils/test/create-machine-props.test.tscoversopen.controlledandvalue.controlled.Installed-consumer gate
scripts/fixtures/core-compat/now renders Popover and Menu beside Dialog, with the same four open modes: omittedopen,defaultOpenfalse,defaultOpentrue, and controlledopen={false}. Menu closes through its trigger. Deselectable Tabs with no initial value selectalpha, clear tonull, then selectbeta.Docs
docs/node-support.mdanddocs/core-compatibility-release.mdname the 0.3.1 gate. The 2026-10-21 beta.17 plus core 0.2.13 record stays historical.Verification
Local Node
v22.23.4. No@destyler/*declaration patch was required.pnpm lint: exit 0. 667 problems, 0 errors, 667 warnings.pnpm --filter @destyler-ui/vue check(vue-tsc --noEmit): exit 0.pnpm --filter @destyler-ui/react check(tsc --noEmit): exit 0.pnpm --filter @destyler-ui/solid typecheck(tsc --noEmit): exit 0.pnpm --filter @destyler-ui/svelte typecheck(svelte-check): 0 errors and 0 warnings.pnpm test: 438 files passed, 7174 tests passed, 48 skipped.pnpm build: exit 0.pnpm test:core-compat: runner tests 14 passed, 0 failed. Packed React, Vue, Solid, and Svelte consumers each passed against exact core0.3.1(@destyler/dialogrecorded as0.3.1, and every installed@destyler/*package at0.3.1). Each consumer passed Dialog, Popover, and Menuomitted,default-false,default-true, andcontrolled-false, plusTabs nullable(alpha,null,beta). Packed UI artifacts stayed0.0.1-beta.17.Release notes
When beta.18 is prepared, include the Svelte Tree branch-trigger migration from
docs/release-scope.mdandpackages/svelte/README.md(#154). Do not treat this pull request as that release.Need help on this PR? Tag
@codesmith-botwith what you need.Note
Medium Risk
Wide dependency bump plus Tabs callback typing changes can break consumers with narrow handlers; expanded compat tests reduce but do not eliminate regression risk across all components.
Reviewed by Cursor Bugbot for commit 3090a28. Bugbot is set up for automated code reviews on this repo. Configure here.