Skip to content

feat!: move to Astryx 0.6.5; prepare 0.2.0-alpha.16 - #58

Merged
yomybaby merged 4 commits into
mainfrom
chore/astryx-0.6.5
Oct 6, 2026
Merged

yomybaby merged 4 commits into
mainfrom
chore/astryx-0.6.5

Conversation

@yomybaby

@yomybaby yomybaby commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Summary

Astryx 0.6.2 → 0.6.5 (@astryxdesign/core, theme-neutral, cli) and @astryxdesign/lab → 0.6.5-canary.8701623, done with ui-common sync-astryx, released as 0.2.0-alpha.16.

What the bump dragged in:

  • New mirrored subpaths: Timer, Markdown/parser, Markdown/plugins, Markdown/remark, and the new core export pattern ./locales/*.generated.js (Astryx's compact locale string maps). scripts/gen-exports.mjs now handles both locale patterns, vite.config.ts copies the generated .js/.d.ts beside the JSON catalogs, and check-pack.mjs asserts the full set is packed. lab gains DrawerHeader, MobileTokenizer.
  • Drawer fork re-taken from lab 0.6.5 (src/forks/Drawer/). Lab now registers with core's layer-dismissal stack itself, so the fork drops its Escape change and keeps only aria-modal passthrough and the Modal portal host (ModalPortalContext). Lab's contract change ships with it and is breaking for Drawer consumers: no built-in close button / hasCloseButton (compose DrawerHeader with onOpenChange), new purpose prop, scrimless drawers open via showPopover(), modal drawers trap Tab. CHANGELOG spells it out.
  • ComplexSelector / Tour forks re-synced (sync-forks.mjs --accept): compiled styles and provenance hashes. The hasClear ordering test now ignores the clear button's tooltip nodes, which 0.6.5 renders as siblings.
  • PagedSelector: the borrowed search-input class for the coarse-pointer font floor was renamed upstream (xdk3u5w → x1w61h2b, now iOS-only).
  • Consumer upgrade path: packages/cli/codemods/0.2.0-alpha.16/upstream.json records Astryx's 0.6.4 codemods (migrate-native-picker-to-presentation, theme descriptors) so ui-common upgrade runs them for a consumer crossing alpha.16. The 0.1 → 0.2 migration map now requires the lab canary this version actually peers on, and sync-astryx --lab moves that value from now on.
  • Upstream upgrade steps now edit package.json (ready-gate finding): ui-common upgrade --from 0.2.0-alpha.15 bumps the @lablup/ui-common / @lablup/ui-common-cli pins and, when the project declares @astryxdesign/lab, moves it to the canary recorded in upstream.json (new lab field, written by sync-astryx --lab) and re-points the lab>core override via the 0.2 step's helpers. Astryx's project-level codemods (migrate-theme-catalog-to-descriptors, an integration-package concern) are noted, not run per file — running one crashed the fixture's upgrade --dry-run in CI.
  • Upgrade fixtures regenerated (UPDATE_FIXTURES=1), registry test extended for the new upstream step.

Verification

pnpm run verify — typecheck, lint, format, boundary, theme:check, 1448 tests (2 skipped stylesheet-dependent Drawer tests, as before), build, check:pack (930 files / 147 export paths), astryx doctor integration validate — all pass.

Review

Ready gate: Opus agent 1 blocking finding (scrimless-drawer Modal host, fixed in 55750a9); Copilot 3 threads (same Modal issue; upgrade-tool pin gap, fixed in 9ae7d88; unmount close event, won't-apply — verbatim upstream code). All replied and resolved; fixes landed after the reviews and were verified by pnpm run verify + the CI external-install job.

Release

After merge: create the GitHub release v0.2.0-alpha.16; the publish workflow publishes both packages under next.

Bump @astryxdesign/core, theme-neutral and cli from 0.6.2 to 0.6.5 and
@astryxdesign/lab to 0.6.5-canary.8701623, with `ui-common sync-astryx`.

- Mirror the new core subpaths (Timer, Markdown/parser|plugins|remark) and
  the new `./locales/*.generated.js` pattern: the export generator now knows
  both locale patterns, the build copies the generated string maps (js +
  d.ts) beside the JSON catalogs, and check-pack asserts the whole set.
- Re-take the Drawer fork from lab 0.6.5. Lab now routes Escape through
  core's layer-dismissal stack itself, so the fork keeps only aria-modal
  passthrough and the Modal portal host. Lab's contract change comes with
  it: no built-in close button (compose DrawerHeader), a `purpose` prop,
  showPopover() for scrimless drawers, a focus trap when modal.
- Re-sync the ComplexSelector and Tour forks (compiled styles, provenance).
  The hasClear order test ignores the clear button's tooltip nodes.
- PagedSelector: follow the renamed coarse-pointer font-floor class.
- Record Astryx's 0.6.4 codemods for consumers under 0.2.0-alpha.16, and
  make the 0.1 -> 0.2 map require the lab canary ui-common peers on;
  `sync-astryx --lab` now moves that requirement too.

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.

Copilot review overview

🟡 Changes recommended

Consumer dependency migration, nested Modal stacking, and Drawer unmount notifications have unresolved regressions.

Review effort: Balanced
Findings: 3 Medium severity

Open (3)
What changed in this PR

Upgrades ui-common to Astryx 0.6.5 and prepares the 0.2.0-alpha.16 release.

Changes:

  • Mirrors new exports and generated locale maps.
  • Refreshes component forks, including Drawer’s breaking contract changes.
  • Registers consumer codemods and updates dependency pins, fixtures, and documentation.
File Description
vite.config.ts Copies generated locale assets.
src/​theme/​lablup/​built/​theme.css Refreshes theme output and font styling.
src/​theme/​lablup/​built/​lablup.variants.d.ts Updates generator version comments.
src/​theme/​lablup/​built/​lablup.js Updates generator version comments.
src/​theme/​lablup/​built/​lablup.d.ts Updates generator version comments.
src/​index.ts Exposes new core APIs and types.
src/​forks/​Tour/​useTour.ts Updates provenance comment.
src/​forks/​Tour/​TourStep.tsx Updates provenance comment.
src/​forks/​Tour/​TourStep.styles.ts Updates generated provenance comment.
src/​forks/​Tour/​TourContext.ts Updates provenance comment.
src/​forks/​Tour/​Tour.tsx Updates provenance comment.
src/​forks/​Tour/​Tour.test.tsx Updates provenance comment.
src/​forks/​provenance.json Refreshes fork versions, hashes, and notes.
src/​forks/​Drawer/​useDrawerDialogPresence.ts Adds popover presence and close notifications.
src/​forks/​Drawer/​Drawer.tsx Adopts upstream dismissal and top-layer behavior.
src/​forks/​Drawer/​Drawer.test.tsx Tests the updated Drawer contract.
src/​forks/​Drawer/​Drawer.styles.ts Refreshes compiled Drawer styles.
src/​forks/​Drawer/​Drawer.fork.test.tsx Updates fork integration and parity tests.
src/​forks/​ComplexSelector/​ComplexSelector.tsx Updates provenance comments.
src/​forks/​ComplexSelector/​ComplexSelector.test.tsx Updates provenance comment.
src/​forks/​ComplexSelector/​ComplexSelector.styles.ts Refreshes compiled selector styles.
src/​forks/​ComplexSelector/​ComplexSelector.fork.test.tsx Excludes tooltip nodes from ordering checks.
src/​components/​PagedSelector/​PanelSearchInput.tsx Updates the borrowed input class.
src/​astryx/​Timer.ts Adds Timer re-export.
src/​astryx/​Markdown/​remark.ts Adds remark re-export.
src/​astryx/​Markdown/​plugins.ts Adds plugins re-export.
src/​astryx/​Markdown/​parser.ts Adds parser re-export.
src/​astryx/​lab.ts Exposes new lab APIs and types.
scripts/​gen-exports.mjs Supports generated locale exports.
scripts/​check-pack.mjs Checks generated locale packaging.
README.md Updates overrides and locale documentation.
pnpm-workspace.yaml Updates lab compatibility settings.
pnpm-lock.yaml Records upgraded dependencies.
packages/​cli/​test/​upgrade/​fixtures/​subpath-barrel/​expected/​ui-common-upgrade-report.md Updates expected upgrade guidance.
packages/​cli/​test/​upgrade/​fixtures/​subpath-barrel/​expected/​package.json Updates expected lab pin.
packages/​cli/​test/​upgrade/​fixtures/​adapter/​expected/​ui-common-upgrade-report.md Updates expected upgrade guidance.
packages/​cli/​test/​upgrade/​fixtures/​adapter/​expected/​package.json Updates expected lab pin.
packages/​cli/​test/​cli/​cli.test.ts Covers upstream migration registration.
packages/​cli/​package.json Bumps CLI release and Astryx dependency.
packages/​cli/​migration/​0.1-to-0.2.json Updates the required lab canary.
packages/​cli/​codemods/​0.2.0-alpha.16/​upstream.json Registers upstream codemods.
packages/​cli/​cli/​sync-astryx.mjs Synchronizes migration lab requirements.
package.json Updates release, dependencies, and exports.
CONTRIBUTING.md Documents remaining fork differences.
CHANGELOG.md Documents release and breaking changes.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/cli/codemods/0.2.0-alpha.16/upstream.json
Comment thread src/forks/Drawer/Drawer.tsx
Comment thread src/forks/Drawer/useDrawerDialogPresence.ts
A scrimless drawer is a manual popover since lab 0.6.5, so it is top layer
like the scrimmed one; a Modal left in the body portal painted behind it.
The fork now provides its dialog through ModalPortalContext whenever it is
open. Found by the ready-gate review.
@yomybaby

yomybaby commented Oct 6, 2026 •

Copy link
Copy Markdown
Member Author

Ready-gate agent review (Opus) — blocking issues only

# File:line Finding Outcome
O1 src/forks/Drawer/Drawer.tsx:276 A Modal inside a scrimless drawer paints behind it: lab 0.6.5 opens scrimless drawers with showPopover() (top layer), but the fork handed the ModalPortalContext host only to scrimmed drawers, so the Modal stayed a z-index: 1100 body portal under a top-layer dialog. Fixed in 55750a9 — the host is provided whenever the drawer is open; fork test flipped to assert the Modal renders into the popover drawer and enters the top layer; provenance note, modalStack comment, CONTRIBUTING and CHANGELOG updated. Verified by pnpm run verify (1446 tests). Landed after the review, not re-reviewed.

Copilot: reviewed (its review landed after the 5-minute window) — 3 threads: one duplicate of O1 (fixed), one upgrade-tool gap fixed in 9ae7d88, one won't-apply (verbatim upstream code). All replied and resolved.

…eam upgrade step

An alpha-to-alpha upgrade selects only the Astryx-bump step, which had no
package.json hook: the codemods ran while @lablup/ui-common, the CLI and
@astryxdesign/lab stayed pinned to the old versions and lab's core override
to the old core. The upstream step now bumps the ui-common and CLI pins to
the target and, when the project declares lab, moves it to the canary the
manifest records (sync-astryx --lab writes it) and re-points the override
through the 0.2 step's helpers. Found by the ready-gate review.
… step

Astryx 0.6.4 ships migrate-theme-catalog-to-descriptors as a project
codemod (package root in, plan of writes out), not a file transform. Run
per file it threw and took the fixture's `ui-common upgrade --from 0.1
--dry-run` down in CI. Project codemods concern an Astryx integration
package, which a consumer is not, so the step notes them the way it notes
config codemods, and a transform that returns a promise is refused with a
clear error instead of being spliced into source.
@yomybaby
yomybaby marked this pull request as ready for review October 6, 2026 13:44
@yomybaby
yomybaby merged commit 73b7103 into main Oct 6, 2026
2 checks passed
@yomybaby
yomybaby deleted the chore/astryx-0.6.5 branch October 6, 2026 13:45
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