feat: make @lynx-js/web-core-wasm implementation to be a only implementation#2322
feat: make @lynx-js/web-core-wasm implementation to be a only implementation#2322PupilTong merged 33 commits intolynx-family:mainfrom
Conversation
🦋 Changeset detectedLatest commit: 2767588 The changes in this PR will be included in the next version bump. This PR includes changesets to release 9 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
📝 WalkthroughWalkthroughThis PR consolidates the web-platform layout by replacing the Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
ef10c82 to
7d3b5f7
Compare
Web Explorer#8340 Bundle Size — 521.22KiB (+35.31%).2767588(current) vs e3e63de main#8327(baseline) Bundle metrics
Bundle size by type
Bundle analysis report Branch PupilTong:p/hw/replace-web-core Project dashboard Generated by RelativeCI Documentation Report issue |
31a9848 to
a172e14
Compare
Merging this PR will not alter performance
Performance Changes
Comparing Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (2)
packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts (2)
463-477: Replace fixed sleep with a polling assertion for scroll progress.
wait(2000)at Line 472 is timing-sensitive; useexpect.pollonscrollTopfor deterministic behavior.♻️ Suggested fix
await page.locator('#target').click(); - await wait(2000); - const scrollTopAfter = await scrollView.evaluate((node) => - node.scrollTop - ); - expect(scrollTopAfter).toBeGreaterThan(100); + await expect.poll( + async () => scrollView.evaluate((node) => node.scrollTop), + ).toBeGreaterThan(100);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts` around lines 463 - 477, In the test 'basic-ref-main-invoke-ui-method' replace the fixed wait(2000) with a polling assertion that checks the scrollTop of the scrollView locator until it exceeds 100; specifically, remove the wait(2000) and use expect.poll to repeatedly evaluate scrollView.evaluate(node => node.scrollTop) (with an appropriate timeout and interval) and assert .toBeGreaterThan(100) so the assertion is deterministic and not timing-sensitive (refer to identifiers: test name 'basic-ref-main-invoke-ui-method', variable scrollView, and locator '#scroll-view').
4642-4670: Use locator-native count assertions and remove debug console noise.
expect(page.locator(...).count()).resolvesplus long sleeps is brittle;toHaveCountretries automatically and is cleaner. Also, the console forwarding at Line 4642 looks like leftover debug code.♻️ Suggested fix
- page.on('console', msg => console.log('[PAGE]', msg.text())); @@ - await wait(500); - await expect(page.locator('list-item').count()).resolves.toBe(4); + await expect(page.locator('list-item')).toHaveCount(4); @@ - await wait(1000); - await expect(page.locator('list-item').count()).resolves.toBe(3); + await expect(page.locator('list-item')).toHaveCount(3); @@ - await wait(1000); - await expect(page.locator('list-item').count()).resolves.toBe(4); + await expect(page.locator('list-item')).toHaveCount(4);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts` around lines 4642 - 4670, Replace the manual console forwarding and brittle count+sleep assertions with Playwright's locator-native assertions: remove the page.on('console', ...) call and replace occurrences of await expect(page.locator('list-item').count()).resolves.toBe(n) plus wait(...) with await expect(page.locator('list-item')).toHaveCount(n) (these calls will auto-retry). Keep the click interaction on page.locator('#target').click() and the id collection via page.locator('list-item').evaluateAll(...) unchanged, but remove the extra wait(...) calls surrounding the clicks once toHaveCount is used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.changeset/bitter-emus-camp.md:
- Line 9: Update the release note sentence to use a hyphenated compound
adjective: replace the phrase "pure JS/TS based `web-core` implementation" with
"pure JS/TS-based `web-core` implementation" in the
.changeset/bitter-emus-camp.md content so the modifier before `web-core` is
correctly hyphenated.
In `@packages/repl/src/App.tsx`:
- Around line 90-92: The template state in App.tsx is typed as Record<string,
unknown> | null but PreviewPane expects a LynxTemplate imported from the wrong
module; update imports/types so they match: change the PreviewPane/LynxTemplate
import to use `@lynx-js/web-core-wasm/client` (or alternatively change App.tsx to
type the state as LynxTemplate | null), and ensure the value produced by
buildLynxTemplate is assigned to the template state with the correct
LynxTemplate type; update the type signature where template and setTemplate are
declared and any PreviewPane prop typing to consistently reference LynxTemplate
to remove the mismatch.
In `@packages/repl/src/bundler/css-processor.ts`:
- Around line 259-261: The function genStyleInfo and processCSS are using
undefined or incorrect types: import or define the proper StyleInfo type (or
re-export it) and introduce a local interface (e.g., LocalCSSRule) that has the
expected properties sel and decl instead of relying on the DOM CSSRule; replace
all uses of CSSRule[] and unknown return types with the correct LocalCSSRule[]
and StyleInfo return type, update genStyleInfo, processCSS and any helpers to
use those concrete types, and, if acceptable, import StyleInfo from
packages/webpack/template-webpack-plugin/src/web/StyleInfo.ts to avoid the
TS2304/TS2353 and eliminate the unknowns.
In `@packages/web-platform/web-core-e2e/shell-project/devMiddleware.ts`:
- Line 10: Call executeTemplate synchronously (remove the awaiting) and guard
its return value before injecting into the HTML: replace the awaited call to
executeTemplate with a direct call, capture the returned string | undefined,
then check the result (e.g., if result === undefined) and either substitute a
safe fallback (empty string) or handle the error before injecting into the
response; update the code paths where executeTemplate is used (the call site in
devMiddleware.ts) to use the guarded value instead of directly inserting the
possibly undefined result.
---
Nitpick comments:
In `@packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts`:
- Around line 463-477: In the test 'basic-ref-main-invoke-ui-method' replace the
fixed wait(2000) with a polling assertion that checks the scrollTop of the
scrollView locator until it exceeds 100; specifically, remove the wait(2000) and
use expect.poll to repeatedly evaluate scrollView.evaluate(node =>
node.scrollTop) (with an appropriate timeout and interval) and assert
.toBeGreaterThan(100) so the assertion is deterministic and not timing-sensitive
(refer to identifiers: test name 'basic-ref-main-invoke-ui-method', variable
scrollView, and locator '#scroll-view').
- Around line 4642-4670: Replace the manual console forwarding and brittle
count+sleep assertions with Playwright's locator-native assertions: remove the
page.on('console', ...) call and replace occurrences of await
expect(page.locator('list-item').count()).resolves.toBe(n) plus wait(...) with
await expect(page.locator('list-item')).toHaveCount(n) (these calls will
auto-retry). Keep the click interaction on page.locator('#target').click() and
the id collection via page.locator('list-item').evaluateAll(...) unchanged, but
remove the extra wait(...) calls surrounding the clicks once toHaveCount is
used.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 348aa253-1d15-4dbc-8755-184935bba90a
⛔ Files ignored due to path filters (221)
Cargo.lockis excluded by!**/*.lockpackages/web-platform/web-core-e2e/resources/NotoSansSC-Regular.woff2is excluded by!**/*.woff2packages/web-platform/web-core-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3is excluded by!**/*.mp3packages/web-platform/web-core-e2e/resources/firefox-logo.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/resources/lynx-logo.jpegis excluded by!**/*.jpegpackages/web-platform/web-core-e2e/resources/star.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/server-tests/__snapshots__/server-e2e.test.ts.snapis excluded by!**/*.snappackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.pngis excluded by!**/*.png
📒 Files selected for processing (79)
.changeset/bitter-emus-camp.md.changeset/config.json.changeset/element-animate-papi.md.changeset/green-insects-rule.md.github/workflows/test.yml.typos.tomlAGENTS.mdCargo.tomlpackages/repl/package.jsonpackages/repl/src/App.tsxpackages/repl/src/bundler/css-processor.tspackages/repl/src/bundler/template-builder.tspackages/repl/src/components/LynxPreview.tsxpackages/repl/src/components/PreviewPane.tsxpackages/repl/src/index.tsxpackages/web-platform/offscreen-document/CHANGELOG.mdpackages/web-platform/offscreen-document/Notice.txtpackages/web-platform/offscreen-document/README.mdpackages/web-platform/offscreen-document/package.jsonpackages/web-platform/offscreen-document/src/index.tspackages/web-platform/offscreen-document/src/main/index.tspackages/web-platform/offscreen-document/src/main/initOffscreenDocument.tspackages/web-platform/offscreen-document/src/types/ElementOperation.tspackages/web-platform/offscreen-document/src/types/index.tspackages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.tspackages/web-platform/offscreen-document/src/webworker/OffscreenDocument.tspackages/web-platform/offscreen-document/src/webworker/OffscreenElement.tspackages/web-platform/offscreen-document/src/webworker/OffscreenEvent.tspackages/web-platform/offscreen-document/src/webworker/index.tspackages/web-platform/offscreen-document/tsconfig.jsonpackages/web-platform/tsconfig.jsonpackages/web-platform/web-constants/CHANGELOG.mdpackages/web-platform/web-constants/LICENSE.txtpackages/web-platform/web-constants/Notice.txtpackages/web-platform/web-constants/README.mdpackages/web-platform/web-constants/package.jsonpackages/web-platform/web-constants/src/constants.tspackages/web-platform/web-constants/src/endpoints.tspackages/web-platform/web-constants/src/eventName.tspackages/web-platform/web-constants/src/index.tspackages/web-platform/web-constants/src/types/BackThreadStartConfigs.tspackages/web-platform/web-constants/src/types/Element.tspackages/web-platform/web-constants/src/types/EventType.tspackages/web-platform/web-constants/src/types/FlushElementTreeOptions.tspackages/web-platform/web-constants/src/types/I18n.tspackages/web-platform/web-constants/src/types/JSRealm.tspackages/web-platform/web-constants/src/types/LynxContextEventTarget.tspackages/web-platform/web-constants/src/types/LynxModule.tspackages/web-platform/web-constants/src/types/MainThreadGlobalThis.tspackages/web-platform/web-constants/src/types/MainThreadLynx.tspackages/web-platform/web-constants/src/types/MainThreadStartConfigs.tspackages/web-platform/web-constants/src/types/MarkTiming.tspackages/web-platform/web-constants/src/types/NativeApp.tspackages/web-platform/web-constants/src/types/PageConfig.tspackages/web-platform/web-constants/src/types/Performance.tspackages/web-platform/web-constants/src/types/SSR.tspackages/web-platform/web-constants/src/types/StyleInfo.tspackages/web-platform/web-constants/src/types/TemplateLoader.tspackages/web-platform/web-constants/src/types/index.tspackages/web-platform/web-constants/src/utils/LynxCrossThreadContext.tspackages/web-platform/web-constants/src/utils/generateTemplate.tspackages/web-platform/web-constants/src/utils/index.tspackages/web-platform/web-constants/src/utils/markTiming.tspackages/web-platform/web-constants/tsconfig.jsonpackages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.tspackages/web-platform/web-core-e2e/package.jsonpackages/web-platform/web-core-e2e/playwright.config.tspackages/web-platform/web-core-e2e/resources/font.csspackages/web-platform/web-core-e2e/resources/text.txtpackages/web-platform/web-core-e2e/resources/web-core.main-thread.jsonpackages/web-platform/web-core-e2e/rsbuild.config.tspackages/web-platform/web-core-e2e/scripts/generate-build-command.jspackages/web-platform/web-core-e2e/server-tests/server-e2e.test.tspackages/web-platform/web-core-e2e/shell-project/devMiddleware.tspackages/web-platform/web-core-e2e/shell-project/index.csspackages/web-platform/web-core-e2e/shell-project/index.tspackages/web-platform/web-core-e2e/shell-project/ssr.htmlpackages/web-platform/web-core-e2e/tests/common.csspackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts
💤 Files with no reviewable changes (51)
- packages/web-platform/web-constants/src/types/MainThreadLynx.ts
- packages/web-platform/offscreen-document/Notice.txt
- packages/web-platform/web-constants/src/types/PageConfig.ts
- packages/web-platform/web-constants/LICENSE.txt
- packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts
- packages/web-platform/web-constants/Notice.txt
- packages/web-platform/web-constants/README.md
- packages/web-platform/web-constants/tsconfig.json
- .typos.toml
- packages/web-platform/offscreen-document/CHANGELOG.md
- packages/web-platform/offscreen-document/README.md
- packages/web-platform/web-constants/src/types/MarkTiming.ts
- packages/web-platform/web-constants/src/endpoints.ts
- packages/web-platform/offscreen-document/src/types/ElementOperation.ts
- packages/web-platform/offscreen-document/src/types/index.ts
- packages/web-platform/offscreen-document/src/index.ts
- packages/web-platform/web-constants/src/types/TemplateLoader.ts
- packages/web-platform/web-constants/src/types/JSRealm.ts
- packages/repl/package.json
- packages/web-platform/offscreen-document/tsconfig.json
- packages/web-platform/web-constants/CHANGELOG.md
- packages/web-platform/web-constants/src/index.ts
- packages/web-platform/web-constants/src/eventName.ts
- packages/web-platform/tsconfig.json
- packages/web-platform/offscreen-document/src/main/index.ts
- packages/web-platform/web-constants/src/types/NativeApp.ts
- packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts
- packages/web-platform/web-constants/src/types/SSR.ts
- packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts
- packages/web-platform/web-constants/src/utils/index.ts
- packages/web-platform/web-constants/src/types/EventType.ts
- packages/web-platform/web-constants/src/types/StyleInfo.ts
- packages/web-platform/web-constants/src/utils/markTiming.ts
- packages/web-platform/offscreen-document/package.json
- packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts
- packages/web-platform/web-constants/src/types/Performance.ts
- packages/web-platform/offscreen-document/src/webworker/index.ts
- packages/web-platform/web-constants/src/utils/generateTemplate.ts
- packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts
- packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts
- packages/web-platform/web-constants/src/types/Element.ts
- packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts
- packages/web-platform/web-constants/src/types/I18n.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts
- packages/web-platform/web-constants/src/constants.ts
- packages/web-platform/web-constants/package.json
- packages/web-platform/web-constants/src/types/LynxModule.ts
- packages/web-platform/web-constants/src/types/index.ts
- packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/repl/src/components/LynxPreview.tsx`:
- Line 6: The template prop/state type in LynxPreview (symbol: template) is
incompatible with the parent App.tsx which uses Record<string, unknown> | null;
update LynxPreview to align by either changing template's type to Record<string,
unknown> | null or, for consistency with PreviewPane, import and use the
LynxTemplate type from `@lynx-js/web-core/client` and replace the current
Record<string, string | boolean | number> | null declaration with LynxTemplate |
null so the types match across components.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 890d614c-90e8-4f78-99ea-ed98d41626b1
📒 Files selected for processing (1)
packages/repl/src/components/LynxPreview.tsx
Huxpro
left a comment
There was a problem hiding this comment.
Looking forward for a blogpost
…moval, and replacement, and refine inline style processing.
24530c8
734f4bc to
24530c8
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
packages/repl/src/bundler/css-processor.ts (1)
259-261:⚠️ Potential issue | 🔴 CriticalRestore the concrete
StyleInfo/rule types here.Line 368 references
StyleInfowithout a local import/definition, and Line 265’sCSSRule[]now resolves to the DOM interface while Lines 351-354 build{ sel, decl }. WideninggenStyleInfo,groupedSelectors, andinfotounknownonly masks the mismatch and drops strict TS protection from this code path.💡 Suggested fix
+interface GeneratedCSSRule { + sel: string[][][]; + decl: [string, string][]; +} + +interface GeneratedStyleInfoEntry { + content: string[]; + rules: GeneratedCSSRule[]; + imports?: string[]; +} + +type StyleInfo = Record<string, GeneratedStyleInfoEntry>; + function genStyleInfo( cssMap: Record<string, LynxStyleNode[]>, -): unknown { +): StyleInfo { return Object.fromEntries( Object.entries(cssMap).map(([cssId, nodes]) => { const contentsAtom: string[] = []; - const rules: CSSRule[] = []; + const rules: GeneratedCSSRule[] = []; @@ - const groupedSelectors: unknown[] = []; + const groupedSelectors: GeneratedCSSRule['sel'] = []; @@ - const info: unknown = { + const info: GeneratedStyleInfoEntry = { content: [contentsAtom.join('\n')], rules, };#!/bin/bash set -euo pipefail FILE="packages/repl/src/bundler/css-processor.ts" echo "=== Local imports / type declarations in css-processor.ts ===" sed -n '1,40p' "$FILE" rg -n "interface StyleInfo|type StyleInfo|interface CSSRule|type CSSRule" "$FILE" || true echo echo "=== Changed contract in css-processor.ts ===" sed -n '259,370p' "$FILE" echo echo "=== Canonical StyleInfo shape used by web-core ===" sed -n '1,20p' "packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts"As per coding guidelines,
**/*.{ts,tsx}: Use TypeScript with the strictest mode configuration as defined in tsconfig.json.Also applies to: 298-298, 357-368
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/repl/src/bundler/css-processor.ts` around lines 259 - 261, The function genStyleInfo and its related variables (groupedSelectors, info) were widened to unknown, losing type safety; restore a concrete StyleInfo type (matching the canonical shape used in web-core: objects with sel and decl fields) and a local CSSRule type/alias that reflects the intended rule shape (not the DOM CSSRule interface) and use them instead of unknown; update genStyleInfo(cssMap: Record<string, LynxStyleNode[]>) to return StyleInfo[] (or the appropriate union), type groupedSelectors and info accordingly, and import or declare the StyleInfo/CSSRule types so references like StyleInfo on line 368 resolve to the correct shape.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.changeset/bitter-emus-camp.md:
- Around line 1-3: Update the changeset entry so the version bump for the
package key "@lynx-js/web-core" is "minor" instead of "major"; locate the string
line containing "\"@lynx-js/web-core\": major" in .changeset/bitter-emus-camp.md
and change the value to "minor" to produce a 0.20.0 release rather than 1.0.0.
---
Duplicate comments:
In `@packages/repl/src/bundler/css-processor.ts`:
- Around line 259-261: The function genStyleInfo and its related variables
(groupedSelectors, info) were widened to unknown, losing type safety; restore a
concrete StyleInfo type (matching the canonical shape used in web-core: objects
with sel and decl fields) and a local CSSRule type/alias that reflects the
intended rule shape (not the DOM CSSRule interface) and use them instead of
unknown; update genStyleInfo(cssMap: Record<string, LynxStyleNode[]>) to return
StyleInfo[] (or the appropriate union), type groupedSelectors and info
accordingly, and import or declare the StyleInfo/CSSRule types so references
like StyleInfo on line 368 resolve to the correct shape.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 9e968b20-9155-4fb2-b47d-9ffe8049a74b
⛔ Files ignored due to path filters (158)
Cargo.lockis excluded by!**/*.lockpackages/web-platform/web-core-e2e/resources/NotoSansSC-Regular.woff2is excluded by!**/*.woff2packages/web-platform/web-core-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3is excluded by!**/*.mp3packages/web-platform/web-core-e2e/resources/firefox-logo.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/resources/lynx-logo.jpegis excluded by!**/*.jpegpackages/web-platform/web-core-e2e/resources/star.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/server-tests/__snapshots__/server-e2e.test.ts.snapis excluded by!**/*.snappackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.pngis excluded by!**/*.pngpackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.pngis excluded by!**/*.png
📒 Files selected for processing (77)
.changeset/bitter-emus-camp.md.changeset/config.json.github/workflows/test.yml.typos.tomlAGENTS.mdCargo.tomlpackages/repl/package.jsonpackages/repl/src/App.tsxpackages/repl/src/bundler/css-processor.tspackages/repl/src/bundler/template-builder.tspackages/repl/src/components/LynxPreview.tsxpackages/repl/src/components/PreviewPane.tsxpackages/repl/src/index.tsxpackages/web-platform/offscreen-document/CHANGELOG.mdpackages/web-platform/offscreen-document/Notice.txtpackages/web-platform/offscreen-document/README.mdpackages/web-platform/offscreen-document/package.jsonpackages/web-platform/offscreen-document/src/index.tspackages/web-platform/offscreen-document/src/main/index.tspackages/web-platform/offscreen-document/src/main/initOffscreenDocument.tspackages/web-platform/offscreen-document/src/types/ElementOperation.tspackages/web-platform/offscreen-document/src/types/index.tspackages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.tspackages/web-platform/offscreen-document/src/webworker/OffscreenDocument.tspackages/web-platform/offscreen-document/src/webworker/OffscreenElement.tspackages/web-platform/offscreen-document/src/webworker/OffscreenEvent.tspackages/web-platform/offscreen-document/src/webworker/index.tspackages/web-platform/offscreen-document/tsconfig.jsonpackages/web-platform/tsconfig.jsonpackages/web-platform/web-constants/CHANGELOG.mdpackages/web-platform/web-constants/LICENSE.txtpackages/web-platform/web-constants/Notice.txtpackages/web-platform/web-constants/README.mdpackages/web-platform/web-constants/package.jsonpackages/web-platform/web-constants/src/constants.tspackages/web-platform/web-constants/src/endpoints.tspackages/web-platform/web-constants/src/eventName.tspackages/web-platform/web-constants/src/index.tspackages/web-platform/web-constants/src/types/BackThreadStartConfigs.tspackages/web-platform/web-constants/src/types/Element.tspackages/web-platform/web-constants/src/types/EventType.tspackages/web-platform/web-constants/src/types/FlushElementTreeOptions.tspackages/web-platform/web-constants/src/types/I18n.tspackages/web-platform/web-constants/src/types/JSRealm.tspackages/web-platform/web-constants/src/types/LynxContextEventTarget.tspackages/web-platform/web-constants/src/types/LynxModule.tspackages/web-platform/web-constants/src/types/MainThreadGlobalThis.tspackages/web-platform/web-constants/src/types/MainThreadLynx.tspackages/web-platform/web-constants/src/types/MainThreadStartConfigs.tspackages/web-platform/web-constants/src/types/MarkTiming.tspackages/web-platform/web-constants/src/types/NativeApp.tspackages/web-platform/web-constants/src/types/PageConfig.tspackages/web-platform/web-constants/src/types/Performance.tspackages/web-platform/web-constants/src/types/SSR.tspackages/web-platform/web-constants/src/types/StyleInfo.tspackages/web-platform/web-constants/src/types/TemplateLoader.tspackages/web-platform/web-constants/src/types/index.tspackages/web-platform/web-constants/src/utils/LynxCrossThreadContext.tspackages/web-platform/web-constants/src/utils/generateTemplate.tspackages/web-platform/web-constants/src/utils/index.tspackages/web-platform/web-constants/src/utils/markTiming.tspackages/web-platform/web-constants/tsconfig.jsonpackages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.tspackages/web-platform/web-core-e2e/package.jsonpackages/web-platform/web-core-e2e/playwright.config.tspackages/web-platform/web-core-e2e/resources/font.csspackages/web-platform/web-core-e2e/resources/text.txtpackages/web-platform/web-core-e2e/resources/web-core.main-thread.jsonpackages/web-platform/web-core-e2e/rsbuild.config.tspackages/web-platform/web-core-e2e/scripts/generate-build-command.jspackages/web-platform/web-core-e2e/server-tests/server-e2e.test.tspackages/web-platform/web-core-e2e/shell-project/devMiddleware.tspackages/web-platform/web-core-e2e/shell-project/index.csspackages/web-platform/web-core-e2e/shell-project/index.tspackages/web-platform/web-core-e2e/shell-project/ssr.htmlpackages/web-platform/web-core-e2e/tests/common.csspackages/web-platform/web-core-e2e/tests/reactlynx.spec.ts
💤 Files with no reviewable changes (51)
- packages/web-platform/offscreen-document/Notice.txt
- packages/web-platform/offscreen-document/README.md
- packages/web-platform/web-constants/CHANGELOG.md
- packages/web-platform/web-constants/LICENSE.txt
- packages/web-platform/web-constants/README.md
- .typos.toml
- packages/web-platform/offscreen-document/src/types/index.ts
- packages/web-platform/offscreen-document/src/main/index.ts
- packages/web-platform/offscreen-document/CHANGELOG.md
- packages/web-platform/offscreen-document/tsconfig.json
- packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts
- packages/web-platform/web-constants/package.json
- packages/web-platform/web-constants/src/types/TemplateLoader.ts
- packages/web-platform/web-constants/tsconfig.json
- packages/web-platform/offscreen-document/src/index.ts
- packages/web-platform/web-constants/src/types/MainThreadLynx.ts
- packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts
- packages/repl/package.json
- packages/web-platform/web-constants/src/types/MarkTiming.ts
- packages/web-platform/web-constants/src/types/JSRealm.ts
- packages/web-platform/web-constants/src/endpoints.ts
- packages/web-platform/web-constants/src/types/PageConfig.ts
- packages/web-platform/offscreen-document/src/types/ElementOperation.ts
- packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts
- packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts
- packages/web-platform/tsconfig.json
- packages/web-platform/web-constants/src/utils/index.ts
- packages/web-platform/offscreen-document/package.json
- packages/web-platform/web-constants/src/types/NativeApp.ts
- packages/web-platform/web-constants/src/index.ts
- packages/web-platform/web-constants/src/types/SSR.ts
- packages/web-platform/web-constants/src/utils/markTiming.ts
- packages/web-platform/offscreen-document/src/webworker/index.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts
- packages/web-platform/web-constants/Notice.txt
- packages/web-platform/web-constants/src/eventName.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts
- packages/web-platform/web-constants/src/types/StyleInfo.ts
- packages/web-platform/web-constants/src/types/LynxModule.ts
- packages/web-platform/web-constants/src/utils/generateTemplate.ts
- packages/web-platform/web-constants/src/types/Element.ts
- packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts
- packages/web-platform/web-constants/src/constants.ts
- packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts
- packages/web-platform/web-constants/src/types/I18n.ts
- packages/web-platform/web-constants/src/types/EventType.ts
- packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts
- packages/web-platform/web-constants/src/types/index.ts
- packages/web-platform/web-constants/src/types/Performance.ts
- packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts
✅ Files skipped from review due to trivial changes (8)
- packages/web-platform/web-core-e2e/shell-project/ssr.html
- packages/web-platform/web-core-e2e/server-tests/server-e2e.test.ts
- packages/web-platform/web-core-e2e/rsbuild.config.ts
- packages/web-platform/web-core-e2e/shell-project/index.ts
- packages/repl/src/components/PreviewPane.tsx
- packages/web-platform/web-core-e2e/shell-project/devMiddleware.ts
- Cargo.toml
- packages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.ts
🚧 Files skipped from review as they are similar to previous changes (7)
- packages/repl/src/App.tsx
- packages/repl/src/index.tsx
- .changeset/config.json
- packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts
- packages/repl/src/bundler/template-builder.ts
- packages/repl/src/components/LynxPreview.tsx
- packages/web-platform/web-core-e2e/package.json
There was a problem hiding this comment.
♻️ Duplicate comments (1)
.changeset/bitter-emus-camp.md (1)
9-9:⚠️ Potential issue | 🟡 MinorAddress the hyphenation issue in the release notes.
The compound adjective "pure JS/TS based" should be hyphenated as "pure JS/TS-based" when it precedes the noun it modifies.
📝 Proposed fix
-This release marks a major architectural upgrade for the web platform. The experimental, WASM-powered engine formerly known as `web-core-wasm` has been fully stabilized and merged into the main branch, completely replacing the previous pure JS/TS based `web-core` implementation. This consolidation massively improves execution performance and aligns the API boundaries of the Web platform directly with other native Lynx implementations. +This release marks a major architectural upgrade for the web platform. The experimental, WASM-powered engine formerly known as `web-core-wasm` has been fully stabilized and merged into the main branch, completely replacing the previous pure JS/TS-based `web-core` implementation. This consolidation massively improves execution performance and aligns the API boundaries of the Web platform directly with other native Lynx implementations.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.changeset/bitter-emus-camp.md at line 9, Update the release note text to hyphenate the compound adjective: replace the phrase "pure JS/TS based `web-core` implementation" with "pure JS/TS-based `web-core` implementation" in the .changeset release description so the modifier is correctly hyphenated before the noun.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In @.changeset/bitter-emus-camp.md:
- Line 9: Update the release note text to hyphenate the compound adjective:
replace the phrase "pure JS/TS based `web-core` implementation" with "pure
JS/TS-based `web-core` implementation" in the .changeset release description so
the modifier is correctly hyphenated before the noun.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 7513fd8b-47d9-4147-a452-8b42237d48bc
📒 Files selected for processing (1)
.changeset/bitter-emus-camp.md
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @lynx-js/rspeedy@0.14.0 ### Minor Changes - feat: add `Minify.mainThreadOptions` and `Minify.backgroundOptions` for thread-specific minifier. ([#2336](#2336)) ### Patch Changes - Bump Rsbuild v1.7.4 with Rspack v1.7.10. ([#2384](#2384)) - Updated dependencies \[]: - @lynx-js/web-rsbuild-server-middleware@0.20.0 ## @lynx-js/lynx-bundle-rslib-config@0.3.0 ### Minor Changes - **BREAKING CHANGE**: ([#2370](#2370)) Simplify the API for external bundle builds by `externalsPresets` and `externalsPresetDefinitions`. ### Patch Changes - Preserve the default external-bundle `output.minify.jsOptions` when users set `output.minify: true` in `defineExternalBundleRslibConfig`, so required minifier options are not lost. ([#2390](#2390)) ## @lynx-js/external-bundle-rsbuild-plugin@0.1.0 ### Minor Changes - **BREAKING CHANGE**: ([#2370](#2370)) Simplify the API for external bundle builds by `externalsPresets` and `externalsPresetDefinitions`. ### Patch Changes - Updated dependencies \[[`7b7a0c6`](7b7a0c6)]: - @lynx-js/externals-loading-webpack-plugin@0.1.0 ## @lynx-js/react-rsbuild-plugin@0.14.0 ### Minor Changes - feat: support `optimizeBundleSize` option to remove unused code for main-thread and background. ([#2336](#2336)) - If `optimizeBundleSize` is `true` or `optimizeBundleSize.background` is `true`, `lynx.registerDataProcessors` calls will be marked as pure for the background thread output. - If `optimizeBundleSize` is `true` or `optimizeBundleSize.mainThread` is `true`, `NativeModules.call` and `lynx.getJSModule` calls will be marked as pure for the main-thread output. ### Patch Changes - refactor: remove `modifyWebpackChain` since Rsbuild 2.0 dropped webpack support ([#2397](#2397)) - Updated dependencies \[[`9193711`](9193711)]: - @lynx-js/template-webpack-plugin@0.10.7 - @lynx-js/css-extract-webpack-plugin@0.7.0 - @lynx-js/react-webpack-plugin@0.8.0 - @lynx-js/react-alias-rsbuild-plugin@0.14.0 - @lynx-js/use-sync-external-store@1.5.0 - @lynx-js/react-refresh-webpack-plugin@0.3.5 ## @lynx-js/web-core@0.20.0 ### Minor Changes - **This is a breaking change** ([#2322](#2322)) ## Architectural Upgrade: `web-core-wasm` replaces `web-core` This release marks a major architectural upgrade for the web platform. The experimental, WASM-powered engine formerly known as `web-core-wasm` has been fully stabilized and merged into the main branch, completely replacing the previous pure JS/TS based `web-core` implementation. This consolidation massively improves execution performance and aligns the API boundaries of the Web platform directly with other native Lynx implementations. ### 🎉 Added Features - **Core API Enhancements**: Successfully exposed and supported `__QuerySelector` and `__InvokeUIMethod` methods. - **Security & CSP Compliance**: Added a `nonce` attribute to the iframe's `srcdoc` script execution, strengthening Content Security Policy (CSP) compliance. - **`<lynx-view>` Parameter Enhancements**: - Added the `browser-config` attribute and property to `<lynx-view>`. Development environments can now supply a `BrowserConfig` object (e.g., configuring `pixelRatio`, `pixelWidth`, `pixelHeight`) allowing the `systemInfo` payload to be dynamically configured at the instance level. ### 🔄 Changed Features - **Legacy JSON Backwards Compatibility**: Delivered comprehensive fixes and optimizations to deeply support legacy JSON output templates: - Added support for lazy loading execution mode (`lazy usage`). - Implemented the correct decoding and handling of `@keyframe` animation rules. - Rectified rule scoping matching including scoped CSS, root selectors, and type selectors. - **Ecosystem Migration**: Updated testing and ecosystem applications (such as `web-explorer` and `shell-project`) to migrate away from obsolete fragmented dependencies. The new WASM architecture seamlessly integrates Element APIs and CSS directly inside the core client module, requiring a much simpler initialization footprint. **Before (Legacy `web-core` + `web-elements`):** ```typescript // Required multiple imports to assemble the environment import "@lynx-js/web-core/client"; import type { LynxViewElement as LynxView } from "@lynx-js/web-core"; // Had to manually import separate elements and their CSS import "@lynx-js/web-elements/index.css"; import "@lynx-js/web-elements/all"; const lynxView = document.createElement("lynx-view") as LynxView; // ... ``` **After (New `web-core` unified architecture):** ```typescript // The new engine natively registers Web Components and injects fundamental CSS import "@lynx-js/web-core/client"; import type { LynxViewElement as LynxView } from "@lynx-js/web-core/client"; const lynxView = document.createElement("lynx-view") as LynxView; // ... ``` _(Applications can now drop `@lynx-js/web-elements` entirely from their `package.json` dependencies)._ - **Dependency & Boot Sequence Improvements**: Re-architected module loading pathways. Promoted `wasm-feature-detect` directly to a core dependency, and hardened the web worker count initialization assertions. - **Initialization Optimizations**: Converted `SERVER_IN_SHADOW_CSS` initialization bounds to use compilation-time constant expressions for better optimization. ### 🗑️ Deleted Features & Structural Deprecations - **`<lynx-view>` Parameter Removals**: - Removed the `thread-strategy` property and attribute. Historically, this permitted consumers to toggle between `'multi-thread'` and `'all-on-ui'` modes depending on how they wanted the background logic to be executed. The WASM-driven architecture enforces a consolidated concurrency model, deprecating this `<lynx-view>` attribute entirely. - Removed the `overrideLynxTagToHTMLTagMap` property/attribute. HTML tag overriding mechanism has been deprecated in the new engine. - Removed the `customTemplateLoader` property handler from `<lynx-view>`. - Removed the `inject-head-links` property and attribute (`injectHeadLinks`), which previously was used to automatically inject `<link rel="stylesheet">` tags from the document head into the `lynx-view` shadow root. - **Fragmented Packages Removal**: The new cohesive WASM architecture native to `@lynx-js/web-core` handles cross-thread communication, worker boundaries, and rendering loops uniformly. Consequently, multiple obsolete packages have been completely removed from the workspace: - `@lynx-js/web-mainthread-apis` - `@lynx-js/web-worker-runtime` - `@lynx-js/web-core-server` - `@lynx-js/web-core-wasm-e2e` (transitioned into standard test suites) - Added support for `rpx` unit ([#2377](#2377)) **This is a breaking change** The following Styles has been added to `web-core` ```css lynx-view { width: 100%; container-name: lynx-view; container-type: inline-size; --rpx-unit: 1cqw; } ``` Check MDN for the details about these styles: - <https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/container-name> - <https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/container-type> - <https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Containment/Container_queries> ### how it works? For the following code ```html <view style="height:1rpx"></view> ``` it will be transformed to ```html <view style="height:calc(1 * var(--rpx-unit))"></view> ``` Therefore you could use any `<length>` value to replace the unit, for example: ```html <lynx-view style="--rpx-unit:1px"></lynx-view> ``` By default, the --rpx-unit value is `1cqw` - Added support for transform `vw` and `vh` unit ([#2377](#2377)) Add `transform-vw` and `transform-vh` attributes and properties on `<lynx-view>`. For the following code ```html <view style="height:1vw"></view> ``` If the `transform-vw` is enabled `<lynx-view transform-vw="true">`, it will be transformed to ```html <view style="height:calc(1 * var(--vw-unit))"></view> ``` Therefore you could use any `<length>` value to replace the unit, for example: ```html <lynx-view style="--vw-unit:1px"></lynx-view> ``` ### Patch Changes - feat(web-core): add `is_bubble` parameter to `common_event_handler` to properly handle non-bubbling events like `window.Event('click', { bubbles: false })`. ([#2399](#2399)) - chore: update readme ([#2380](#2380)) - fix: the output format should be module ([#2388](#2388)) - opt: use opt-level 3 to compile wasm ([#2371](#2371)) - fix(web-core): avoid partial bundle loading and double fetching when fetchBundle is called concurrently for the same url. ([#2386](#2386)) - fix(web-core): fallback to the original export chunk when `processEvalResult` is absent during `queryComponent` execution ([#2399](#2399)) - fix: tokenizing inline style values correctly to support rpx and ppx unit conversion ([#2381](#2381)) This fixes an issue where the `transform_inline_style_key_value_vec` API bypassed the CSS tokenizer, preventing dimension units like `rpx` or `ppx` from being successfully transformed into `calc` strings when specified via inline styles. - feat: add mts lynx.querySelectorAll API ([#2382](#2382)) - fix: mts in lazy component ([#2375](#2375)) - fix: enableJSDataProcessor not work ([#2372](#2372)) - feat: add `ppx` unit support for CSS, transforming to `calc(... * var(--ppx-unit))` directly. ([#2381](#2381)) - Updated dependencies \[]: - @lynx-js/web-worker-rpc@0.20.0 ## @lynx-js/externals-loading-webpack-plugin@0.1.0 ### Minor Changes - **BREAKING CHANGE**: ([#2370](#2370)) Simplify the API for external bundle builds by `externalsPresets` and `externalsPresetDefinitions`. ## @lynx-js/devtool-connector@0.1.1 ### Patch Changes - fix: align GlobalKeys with Android DevToolSettings keys and filter global switch responses ([#2392](#2392)) ## @lynx-js/devtool-mcp-server@0.5.1 ### Patch Changes - Updated dependencies \[[`95fff27`](95fff27)]: - @lynx-js/devtool-connector@0.1.1 ## @lynx-js/react@0.117.1 ### Patch Changes - Update preact version to simplify `setProperty` implementation ([#2367](#2367)) ## @lynx-js/react-umd@0.117.1 ### Patch Changes - Add a new `entry` export to `@lynx-js/react-umd` for reuse by wrapper libraries of `@lynx-js/react`. ([#2370](#2370)) ## create-rspeedy@0.14.0 ### Patch Changes - Add optional Lynx DevTool skill. ([#2421](#2421)) - move Vitest integration to create-rstack extraTools and merge the Vitest templates into a single incremental overlay ([#2408](#2408)) ## @lynx-js/kitten-lynx-test-infra@0.1.2 ### Patch Changes - Updated dependencies \[[`95fff27`](95fff27)]: - @lynx-js/devtool-connector@0.1.1 ## @lynx-js/template-webpack-plugin@0.10.7 ### Patch Changes - use path.posix.format instead of path.format to ensure consistent path separators across platforms ([#2359](#2359)) - Updated dependencies \[[`75960cd`](75960cd), [`518c310`](518c310), [`863469e`](863469e), [`dc18c5c`](dc18c5c), [`7d242f3`](7d242f3), [`62bebcf`](62bebcf), [`75960cd`](75960cd), [`182f568`](182f568), [`1aa051d`](1aa051d), [`6b46f7e`](6b46f7e), [`fcda36a`](fcda36a), [`182f568`](182f568), [`138f727`](138f727), [`138f727`](138f727)]: - @lynx-js/web-core@0.20.0 ## @lynx-js/react-alias-rsbuild-plugin@0.14.0 ## upgrade-rspeedy@0.14.0 ## @lynx-js/web-rsbuild-server-middleware@0.20.0 ## @lynx-js/web-worker-rpc@0.20.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Plan:
Summary by CodeRabbit
New Features
__QuerySelectorand__InvokeUIMethodAPIs<lynx-view>gainsbrowser-configattribute for pixelRatio/viewport controlBug Fixes
Breaking Changes
thread-strategy,overrideLynxTagToHTMLTagMap,customTemplateLoader,inject-head-linksSecurity
noncesupport for iframe/srcdoc-executed scriptsChecklist