Repository navigation
chore(lab): remove MobileTokenizer and MobilePowerSearch, whose flows Core ships behind experimental.presentation - #9790
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
/approve-spec 85d2c36 |
|
@astracat-bot review |
|
AI review status for this pull request.
|
85d2c36 to
4ed1e41
Compare
|
/approve-spec 4ed1e41 |
|
@astracat-bot review |
There was a problem hiding this comment.
Requesting changes: the removal is in scope, and two small fixes remain before it can merge.
docs/specs/components/BottomSheet/BottomSheetSwitcher.spec.md:99still says Lab'sMobileTokenizerandMobilePowerSearch"are migrated", so please reword it (for example "Lab has no switcher consumer, so no maintained surface uses the switcher"), and the new head will need a fresh/approve-spec.apps/storybook/rtl-audit/targets.jsonre-wraps 37 untouched entries (202 of its 220 changed lines), so please runnode apps/storybook/rtl-audit/sort-targets.mjs --fix, which leaves only the two Lab deletions and avoids conflicts with other open target edits.
Optional: the new @position line in packages/core/src/internal/sheetDraft.ts says the PowerSearch sheet shares the module, but only the Tokenizer sheet imports it.
[Automated review]
| "setup": { | ||
| "click": "button:has-text(\"Delete item\")" | ||
| }, |
There was a problem hiding this comment.
This re-wraps an untouched target, as do 36 others (202 of this file's 220 changed lines). node apps/storybook/rtl-audit/sort-targets.mjs --fix puts the file back in the base layout minus the two Lab entries, so the next --fix run would revert all of it. Running --fix here leaves only the two deletions.
| * @position Core-internal, shared by the Tokenizer and PowerSearch sheets; | ||
| * not a public export |
There was a problem hiding this comment.
Non-blocking: only Tokenizer.tsx and TokenizerBottomSheet.tsx import this module; PowerSearch reaches it only through the Tokenizer sheet its list-value step renders. Suggested: @position Core-internal. The Tokenizer sheet uses it, and PowerSearch's list-value step renders that sheet. Not a public export.
4ed1e41 to
b38cf46
Compare
|
/approve-spec b38cf46 |
|
@astracat-bot review |
There was a problem hiding this comment.
Approving: the removal is in scope, Core's runtime is unchanged, and the stale BottomSheetSwitcher row and the targets.json reformat flagged earlier are both fixed.
Before this can merge, please rebase onto main. Main added ./internal/selectable-card immediately after the removed ./internal/touch-sheet entry in packages/core/package.json and scripts/sync-exports.js, so keep that entry and drop touch-sheet. CI has not run while the branch conflicts, and the rebased head will need its own /approve-spec.
[Automated review]
… Core ships behind experimental.presentation Core's Tokenizer and PowerSearch sheet presentations are the touch flows these two Lab prototypes carried, so the Lab components, their stories, RTL-audit targets, lint-baseline entries and discover inventory rows go. The Core internal entry `internal/touch-sheet` existed only for them and goes too; Core's sheets import the modules by relative path. The Tokenizer, PowerSearch, Indicator and AST-056 records state Core's behavior without the prototype, and Tokenizer's verification names the draft rule's own tests.
b38cf46 to
7a2efc3
Compare
|
/approve-spec 7a2efc3 |
|
@astracat-bot review |
There was a problem hiding this comment.
Approving: the two Lab prototypes and Core's Lab-only internal/touch-sheet entry are removed cleanly, Core's runtime is unchanged, and the rebase keeps main's new internal/selectable-card entry.
There are no blocking findings. Two small description notes, for accuracy only:
- The INV13 note says Lab still reaches the touch modules through
./internal/touch, but no Lab file imports that subpath; the invariant holds either way. - The record list leaves out the
BottomSheetSwitcherdownstream-row edit that the diff carries.
[Automated review]
Maintainer impact
Two Lab components,
MobileTokenizerandMobilePowerSearch, were the prototypes of the touch sheet flows that Core's Tokenizer and PowerSearch now ship behindexperimental.presentation. Keeping them means two copies of each flow to maintain, two sets of tests that drift, Lab-only internal entries in Core, and records that describe Core by comparing it with a prototype.Intended invariant
One owner per flow: Core's
TokenizerBottomSheetandPowerSearchBottomSheetare the touch sheet presentations; Lab holds no copy; Core's internal sheet modules are imported only inside Core by relative path; the component records state Core's behavior on its own.Change
packages/lab/src/MobileTokenizer/*andpackages/lab/src/MobilePowerSearch/*(component, value editor, utils, tests,.doc.mjs, index) and their exports frompackages/lab/src/index.ts.apps/storybook/stories/MobileTokenizer.stories.tsxandMobilePowerSearch.stories.tsx, their two RTL-audit targets, and their three file entries in the comment-provenance lint baseline (the baseline only shrinks).packages/cli/assets/discover/official-packages.json) without the two names, with a[chore]changeset for@astryxdesign/cli.internal/shadcn-registry/routes.lock.json): the two Lab registry items (components/lab/mobile-tokenizer,components/lab/mobile-power-search) drop out. No alias is kept:@astryxdesign/labis private and canary-only with no stability promise, and no record (spec:AST-026,spec:AST-039) asks removed Lab routes to keep aliases.@astryxdesign/core/internal/touch-sheet(itspackage.jsonexport andsync-exportsregistration), which existed only for these two Lab components; a[chore]patch changeset for@astryxdesign/corenames the removed internal entry. Core's sheets importSheetConfirmation,useDismissSearchOnTouchDragandsheetDraftby relative path as before;sheetDraft.ts's header no longer names the entry.architecture:react-component-runtimeINV13 stays true as written: the./internal/touchentry remains for Lab (no Lab file imports it today), and no import of@astryxdesign/core/internal/*exists outside Core and Lab.component:Tokenizer—verified_bydrops the Lab test and addspackages/core/src/internal/sheetDraft.test.ts, which covers the Save rule and dirty check it covered; the FR16–FR27 rationale cells read "touch-flow evidence" (DEC-3/DEC-4); six row statuses read "Verified current behavior."; FR27's remaining action-group gap no longer cites the prototype; the FR16–FR27 verification-map row names the sheet's own draft, Save, footer, confirmation and drag tests.component:PowerSearch— Public concepts and DEC-3 no longer nameMobilePowerSearchor the naming of it as Core's target; the "differs from the prototype in eight places" passage becomes the eight details the flow fixes, stated once; the rejected "steps replace one another" alternative names "an earlier draft of the flow"; the INV7 element-count exception drops the prototype's measurements and keeps Core's; FR10–FR17 rationale cells read "touch-flow evidence".component:Indicator— the current-state note on direct indicator imports names the Tokenizer bottom sheet and the PowerSearch value step.spec:AST-056— the Lab example of the search-prop drift no longer countsMobileTokenizer.component:BottomSheetSwitcher— the downstream row no longer says the two Lab components are migrated; Lab has no switcher consumer.apps/sandbox/.../motion-lab/__generated__/motionAudit.tsstill lists the two names; it is a dated measurement snapshot (core 0.7.5) whose regeneration rewrites 1,600 unrelated lines, so it is left to its owngenerate:motion-auditrun. CI script fixtures (.github/scripts/touched-components.test.mjs,ci-test-routing.test.mjs) and the v0.7.0 codemod test useMobileTokenizeronly as example strings. No other Lab component duplicates a Core experimental presentation.Coordination: #9655 (
fix/powersearch-date-zone) and #9639 (feat/calendar-formatters) currently editpackages/lab/src/MobilePowerSearch/*. Whichever lands second drops its Lab parts; since this PR deletes the files, a rebase of either onto it means dropping their Lab hunks.Evidence
sync-exports --checkandverify-exportspass without the entry; the CLI goldens pass on the regenerated inventory;pnpm check:knowledgealigned.Writing rubric results
Scope
@astryxdesign/labis private and canary-only; Core's public surface is unchanged, andinternal/touch-sheetwas an undocumented internal entry outside the compatibility promise.)Testing
pnpm exec vitest run packages/lab;pnpm -F @astryxdesign/lab typecheck:docs; labtsc --noEmitpnpm -F @astryxdesign/storybook typecheck;pnpm storybook:buildpnpm exec vitest run packages/core/src/Tokenizer packages/core/src/PowerSearch packages/core/src/internal packages/cli/test; core typecheckpnpm build;pnpm check:repo;node scripts/sync-exports.js --check;node scripts/verify-exports.mjs;pnpm check:knowledge;pnpm check:changesetsandscripts/release/changeset-coverage.mjs pr --base origin/main --head HEAD --released v0.7.6(ships to core and cli, each named; Lab is private and needs none); strict ESLint on the touched files; Prettier;git diff --check