@lynx-js/web-core
Version:
This is an internal experimental package, do not use
1,096 lines (712 loc) • 80.1 kB
Markdown
# @lynx-js/web-core
## 0.20.2
### Patch Changes
- fix: map clientX and clientY to x and y in touch event detail ([#2458](https://github.com/lynx-family/lynx-stack/pull/2458))
- fix(web-platform): completely detach event listeners and forcefully free `MainThreadWasmContext` pointer alongside strict FIFO async component disposal to ensure total memory reclamation without use-after-free risks ([#2457](https://github.com/lynx-family/lynx-stack/pull/2457))
- refactor: with WeakRef in element APIs and WASM bindings to improve memory management. ([#2439](https://github.com/lynx-family/lynx-stack/pull/2439))
- fix: preserve CSS variable fallback values when encoding web-core stylesheets so declarations like `var(--token, rgba(...))` are emitted with their fallback intact. ([#2460](https://github.com/lynx-family/lynx-stack/pull/2460))
- fix: avoid to do use-after-free for rust instance ([#2461](https://github.com/lynx-family/lynx-stack/pull/2461))
- fix: Change uniqueId to uid in LynxCrossThreadEventTarget ([#2467](https://github.com/lynx-family/lynx-stack/pull/2467))
- Updated dependencies []:
- @lynx-js/web-worker-rpc@0.20.2
## 0.20.1
### Patch Changes
- Added support for the `global-bind` event handling modifier in the web platform runtime. ([#2438](https://github.com/lynx-family/lynx-stack/pull/2438))
This mechanism enables seamless cross-element event communication without requiring a formal DOM tree relationship, allowing decoupled elements to observe and respond to standard events occurring anywhere within the component tree.
### Usage
Global bindings allow an observer element to react to events triggered on another target element.
#### 1. Define the Global Subscription
Attach `global-bindTap` (or any equivalent standard event alias) to your observer element:
```jsx
<view
id='observer'
global-bindTap={(event) => {
// This will trigger whenever 'tap' is caught by a globally bound event.
console.log('Global tap handled!', event);
}}
/>;
```
#### 2. Trigger the Event anywhere
The event will be triggered via normal user interaction (such as `tap`) on any other constituent elements:
```jsx
<view
id='target'
bindTap={(event) => {
// Note: To successfully propagate globally, ensure the event bubbles.
}}
/>;
```
- feat(web-core): add support for configurable rem unit transform ([#2403](https://github.com/lynx-family/lynx-stack/pull/2403))
- **Description**: Added a new configuration option `transformREM` (also exposed as `transform_rem` on the Rust layer) to the Web Core renderer. When enabled, it recursively converts static `rem` unit values in your styles into dynamic CSS custom properties (`calc(VALUE * var(--rem-unit))`) during template decoding and evaluation. This enables developers to implement responsive font scaling and layout sizing dynamically on the client side simply by modifying the root CSS variable `--rem-unit`.
- **Usage**:
You can enable this feature when working with `LynxView` by setting `transformREM` to `true`, or directly as an HTML attribute `transform-rem`:
```html
<lynx-view
url="https://example.com/template.js"
transform-rem="true"
></lynx-view>
```
```javascript
const lynxView = document.createElement('lynx-view');
lynxView.transformREM = true;
```
With this enabled, a CSS declaration like `font-size: 1.5rem;` is transparently evaluated as `font-size: calc(1.5 * var(--rem-unit));` by the runtime engine.
- Updated dependencies [[`156d64d`](https://github.com/lynx-family/lynx-stack/commit/156d64da67e83dfc92e63568cee602c21db873cf), [`59d11b2`](https://github.com/lynx-family/lynx-stack/commit/59d11b2549e5d2ca2ef18c5fe238c468e6db7d9a)]:
- @lynx-js/css-serializer@0.1.5
- @lynx-js/web-worker-rpc@0.20.1
## 0.20.0
### Minor Changes
- **This is a breaking change** ([#2322](https://github.com/lynx-family/lynx-stack/pull/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](https://github.com/lynx-family/lynx-stack/pull/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](https://github.com/lynx-family/lynx-stack/pull/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](https://github.com/lynx-family/lynx-stack/pull/2399))
- chore: update readme ([#2380](https://github.com/lynx-family/lynx-stack/pull/2380))
- fix: the output format should be module ([#2388](https://github.com/lynx-family/lynx-stack/pull/2388))
- opt: use opt-level 3 to compile wasm ([#2371](https://github.com/lynx-family/lynx-stack/pull/2371))
- fix(web-core): avoid partial bundle loading and double fetching when fetchBundle is called concurrently for the same url. ([#2386](https://github.com/lynx-family/lynx-stack/pull/2386))
- fix(web-core): fallback to the original export chunk when `processEvalResult` is absent during `queryComponent` execution ([#2399](https://github.com/lynx-family/lynx-stack/pull/2399))
- fix: tokenizing inline style values correctly to support rpx and ppx unit conversion ([#2381](https://github.com/lynx-family/lynx-stack/pull/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](https://github.com/lynx-family/lynx-stack/pull/2382))
- fix: mts in lazy component ([#2375](https://github.com/lynx-family/lynx-stack/pull/2375))
- fix: enableJSDataProcessor not work ([#2372](https://github.com/lynx-family/lynx-stack/pull/2372))
- feat: add `ppx` unit support for CSS, transforming to `calc(... * var(--ppx-unit))` directly. ([#2381](https://github.com/lynx-family/lynx-stack/pull/2381))
- Updated dependencies []:
- @lynx-js/web-worker-rpc@0.20.0
## 0.19.8
### Patch Changes
- reexports essential utils & types in @lynx-js/web-elements from @lynx-js/web-core-wasm/client ([#2321](https://github.com/lynx-family/lynx-stack/pull/2321))
- fix: avoid error when LynxView is removed immediately after connected ([#2182](https://github.com/lynx-family/lynx-stack/pull/2182))
- Updated dependencies []:
- @lynx-js/web-constants@0.19.8
- @lynx-js/web-mainthread-apis@0.19.8
- @lynx-js/web-worker-rpc@0.19.8
- @lynx-js/web-worker-runtime@0.19.8
## 0.19.7
### Patch Changes
- feat: add browser config of lynx-view, now you can customize the browser config of lynx-view: ([#2140](https://github.com/lynx-family/lynx-stack/pull/2140))
```
lynxView.browserConfig = {
pixelRatio: 1,
pixelWidth: 1234,
pixelHeight: 5678,
}
```
- Updated dependencies []:
- @lynx-js/web-constants@0.19.7
- @lynx-js/web-mainthread-apis@0.19.7
- @lynx-js/web-worker-rpc@0.19.7
- @lynx-js/web-worker-runtime@0.19.7
## 0.19.6
### Patch Changes
- fix: avoid crash on CPUs that do not support SIMD ([#2133](https://github.com/lynx-family/lynx-stack/pull/2133))
- feat: support lynx.reload() ([#2127](https://github.com/lynx-family/lynx-stack/pull/2127))
- Updated dependencies [[`179f984`](https://github.com/lynx-family/lynx-stack/commit/179f9844adf00ff4b2cd450ffb943649441c87d3), [`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173), [`6c2b51a`](https://github.com/lynx-family/lynx-stack/commit/6c2b51a661ae244eb40671f63f29ee971e084ed4), [`556fe9f`](https://github.com/lynx-family/lynx-stack/commit/556fe9fded90945a7926093897288d5302c314d3), [`5b589ab`](https://github.com/lynx-family/lynx-stack/commit/5b589ab53b01a8e2357d3ccbb159edab004086d3)]:
- @lynx-js/web-constants@0.19.6
- @lynx-js/web-mainthread-apis@0.19.6
- @lynx-js/web-worker-rpc@0.19.6
- @lynx-js/web-worker-runtime@0.19.6
## 0.19.5
### Patch Changes
- fix: pixelWidth and pixelHeight use client instead of screen ([#2055](https://github.com/lynx-family/lynx-stack/pull/2055))
- Updated dependencies [[`a91173c`](https://github.com/lynx-family/lynx-stack/commit/a91173c986ce3f358f1c11c788ca46a0529c701d)]:
- @lynx-js/web-worker-rpc@0.19.5
- @lynx-js/web-constants@0.19.5
- @lynx-js/web-worker-runtime@0.19.5
- @lynx-js/web-mainthread-apis@0.19.5
## 0.19.4
### Patch Changes
- Updated dependencies [[`bba05e2`](https://github.com/lynx-family/lynx-stack/commit/bba05e2ed06cca8009ad415fd9777e8334a0887a)]:
- @lynx-js/web-worker-rpc@0.19.4
- @lynx-js/web-constants@0.19.4
- @lynx-js/web-worker-runtime@0.19.4
- @lynx-js/web-mainthread-apis@0.19.4
## 0.19.3
### Patch Changes
- Updated dependencies [[`986761d`](https://github.com/lynx-family/lynx-stack/commit/986761dd1e9e631f8118faec68188f29f78e9236)]:
- @lynx-js/web-worker-rpc@0.19.3
- @lynx-js/web-constants@0.19.3
- @lynx-js/web-worker-runtime@0.19.3
- @lynx-js/web-mainthread-apis@0.19.3
## 0.19.2
### Patch Changes
- chore: mark the "multi-thread" deprecated ([#2030](https://github.com/lynx-family/lynx-stack/pull/2030))
**NOTICE This will be a breaking change in the future**
mark the thread strategy "multi-thread" as deprecated.
Please use "all-on-ui" instead. If you still want to use multi-thread mode, please try to use a cross-origin isolated iframe.
A console warning will be printed if `thread-strategy` is set to `multi-thread`.
- fix csp issue for mts realm ([#1998](https://github.com/lynx-family/lynx-stack/pull/1998))
- Updated dependencies []:
- @lynx-js/web-constants@0.19.2
- @lynx-js/web-mainthread-apis@0.19.2
- @lynx-js/web-worker-rpc@0.19.2
- @lynx-js/web-worker-runtime@0.19.2
## 0.19.1
### Patch Changes
- fix: support CSP for mts ([#1994](https://github.com/lynx-family/lynx-stack/pull/1994))
- Updated dependencies [[`f7256d5`](https://github.com/lynx-family/lynx-stack/commit/f7256d5bd920b2f6c0cadab44455585c35621b35)]:
- @lynx-js/web-mainthread-apis@0.19.1
- @lynx-js/web-worker-runtime@0.19.1
- @lynx-js/web-constants@0.19.1
- @lynx-js/web-worker-rpc@0.19.1
## 0.19.0
### Minor Changes
- feat: new flex:val impl ([#1979](https://github.com/lynx-family/lynx-stack/pull/1979))
### Patch Changes
- Updated dependencies [[`40c3a1a`](https://github.com/lynx-family/lynx-stack/commit/40c3a1a0436701e46b505301c4ba66a8f68de7c0), [`46bd5ee`](https://github.com/lynx-family/lynx-stack/commit/46bd5eea324d0c8348f44b3d0b437e745411ab5c)]:
- @lynx-js/web-mainthread-apis@0.19.0
- @lynx-js/web-worker-runtime@0.19.0
- @lynx-js/web-constants@0.19.0
- @lynx-js/web-worker-rpc@0.19.0
## 0.18.4
### Patch Changes
- feat: builtinTagTransformMap add `'x-input-ng': 'x-input'` ([#1932](https://github.com/lynx-family/lynx-stack/pull/1932))
- Updated dependencies []:
- @lynx-js/web-constants@0.18.4
- @lynx-js/web-mainthread-apis@0.18.4
- @lynx-js/web-worker-rpc@0.18.4
- @lynx-js/web-worker-runtime@0.18.4
## 0.18.3
### Patch Changes
- Updated dependencies [[`fece7d0`](https://github.com/lynx-family/lynx-stack/commit/fece7d0a92fa76948488373757a27dff52a90437), [`e1db63f`](https://github.com/lynx-family/lynx-stack/commit/e1db63fac8a351f98711b9b47acbb871f7a23701), [`ebc1a60`](https://github.com/lynx-family/lynx-stack/commit/ebc1a606318e9809e8a07457e18536b59be12a18)]:
- @lynx-js/web-mainthread-apis@0.18.3
- @lynx-js/web-worker-runtime@0.18.3
- @lynx-js/web-constants@0.18.3
- @lynx-js/web-worker-rpc@0.18.3
## 0.18.2
### Patch Changes
- feat: builtinTagTransformMap add `'input': 'x-input'` ([#1907](https://github.com/lynx-family/lynx-stack/pull/1907))
- Updated dependencies []:
- @lynx-js/web-constants@0.18.2
- @lynx-js/web-mainthread-apis@0.18.2
- @lynx-js/web-worker-rpc@0.18.2
- @lynx-js/web-worker-runtime@0.18.2
## 0.18.1
### Patch Changes
- fix: mts freeze after reload() ([#1892](https://github.com/lynx-family/lynx-stack/pull/1892))
The mts may be freezed after reload() called.
We fixed it by waiting until the all-on-ui Javascript realm implementation, an iframe, to be fully loaded.
- Updated dependencies [[`70a18fc`](https://github.com/lynx-family/lynx-stack/commit/70a18fce0083743e4516eefc91c0392d748b855f)]:
- @lynx-js/web-mainthread-apis@0.18.1
- @lynx-js/web-worker-runtime@0.18.1
- @lynx-js/web-constants@0.18.1
- @lynx-js/web-worker-rpc@0.18.1
## 0.18.0
### Minor Changes
- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837))
1. `LynxView.updateData()` cannot trigger `dataProcessor`.
2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows:
```ts
LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void
```
### Patch Changes
- Updated dependencies [[`77397fd`](https://github.com/lynx-family/lynx-stack/commit/77397fd535cf60556f8f82f7ef8dae8a623d1625), [`7d90ed5`](https://github.com/lynx-family/lynx-stack/commit/7d90ed52a20fd7665a3517507800e7e29426f6f9)]:
- @lynx-js/web-worker-runtime@0.18.0
- @lynx-js/web-constants@0.18.0
- @lynx-js/web-mainthread-apis@0.18.0
- @lynx-js/web-worker-rpc@0.18.0
## 0.17.2
### Patch Changes
- feat: support load bts chunk from remote address ([#1834](https://github.com/lynx-family/lynx-stack/pull/1834))
- re-support chunk splitting
- support lynx.requireModule with a json file
- support lynx.requireModule, lynx.requireModuleAsync with a remote url
- support to add a breakpoint in chrome after reloading the web page
- Updated dependencies [[`a35a245`](https://github.com/lynx-family/lynx-stack/commit/a35a2452e5355bda3c475f9a750a86085e0cf56a)]:
- @lynx-js/web-worker-runtime@0.17.2
- @lynx-js/web-constants@0.17.2
- @lynx-js/web-mainthread-apis@0.17.2
- @lynx-js/web-worker-rpc@0.17.2
## 0.17.1
### Patch Changes
- Updated dependencies []:
- @lynx-js/web-constants@0.17.1
- @lynx-js/web-mainthread-apis@0.17.1
- @lynx-js/web-worker-rpc@0.17.1
- @lynx-js/web-worker-runtime@0.17.1
## 0.17.0
### Minor Changes
- break(web): temporary remove support for chunk split ([#1739](https://github.com/lynx-family/lynx-stack/pull/1739))
Since the global variables cannot be accessed in the splited chunk, we temporary remove supporting for chunk spliting
Developers could easily remove the chunk Split settings in Rspeedy for migration
```
import { defineConfig } from '@lynx-js/rspeedy'
export default defineConfig({
performance: {
chunkSplit: {
strategy: 'all-in-one',
},
},
})
```
### Patch Changes
- fix: lazy component load error ([#1794](https://github.com/lynx-family/lynx-stack/pull/1794))
Some special version template may have chunk loading error. We fixed it.
- fix: avoid duplicate style transformation ([#1748](https://github.com/lynx-family/lynx-stack/pull/1748))
After this commit, we use DAG methods to handle the styleInfos
- fix: add sandbox attribute to iframe for enhanced security ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709))
- fix: the default template loader won't fetch twice for one url ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709))
- Updated dependencies [[`721635d`](https://github.com/lynx-family/lynx-stack/commit/721635de6c1d2d617c7cbaa86e7d816c42d62930), [`93d707b`](https://github.com/lynx-family/lynx-stack/commit/93d707b82a59f7256952e21da6dcad2999f8233d), [`d150ed4`](https://github.com/lynx-family/lynx-stack/commit/d150ed440a4f1e9d9a3a2911adf6e6fa39a0c589)]:
- @lynx-js/web-mainthread-apis@0.17.0
- @lynx-js/web-constants@0.17.0
- @lynx-js/web-worker-runtime@0.17.0
- @lynx-js/web-worker-rpc@0.17.0
## 0.16.1
### Patch Changes
- refactor: improve chunk loading ([#1703](https://github.com/lynx-family/lynx-stack/pull/1703))
- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235))
- Updated dependencies [[`608f375`](https://github.com/lynx-family/lynx-stack/commit/608f375e20732cc4c9f141bfbf9800ba6896100b)]:
- @lynx-js/web-mainthread-apis@0.16.1
- @lynx-js/web-worker-runtime@0.16.1
- @lynx-js/web-constants@0.16.1
- @lynx-js/web-worker-rpc@0.16.1
## 0.16.0
### Minor Changes
- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589))
Before this change, We create a function wrapper and a fake globalThis for Javascript code.
This caused some issues.
After this change, we will create an iframe for createing an isolated Javascript context.
This means the globalThis will be the real one.
### Patch Changes
- refactor: add `:not([l-e-name])` at the end of selector for lazy component ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622))
- feat: remove multi-thread mts heating ([#1597](https://github.com/lynx-family/lynx-stack/pull/1597))
The default rendering mode is "all-on-ui". Therefore the preheating for "multi-thread" will be removed.
- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599))
- Updated dependencies [[`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]:
- @lynx-js/web-mainthread-apis@0.16.0
- @lynx-js/web-constants@0.16.0
- @lynx-js/web-worker-runtime@0.16.0
- @lynx-js/offscreen-document@0.1.4
- @lynx-js/web-worker-rpc@0.16.0
## 0.15.7
### Patch Changes
- fix: fake uidisappear event ([#1539](https://github.com/lynx-family/lynx-stack/pull/1539))
- Updated dependencies [[`70863fb`](https://github.com/lynx-family/lynx-stack/commit/70863fbc311d8885ebda40855668097b0631f521)]:
- @lynx-js/web-mainthread-apis@0.15.7
- @lynx-js/web-constants@0.15.7
- @lynx-js/web-worker-runtime@0.15.7
- @lynx-js/web-worker-rpc@0.15.7
## 0.15.6
### Patch Changes
- fix: systeminfo in mts function ([#1537](https://github.com/lynx-family/lynx-stack/pull/1537))
- refactor: use utf-8 string ([#1473](https://github.com/lynx-family/lynx-stack/pull/1473))
- Fix mtsGlobalThis race condition in createRenderAllOnUI ([#1506](https://github.com/lynx-family/lynx-stack/pull/1506))
- Updated dependencies [[`405a917`](https://github.com/lynx-family/lynx-stack/commit/405a9170442ae32603b7687549b49ab4b34aff92), [`b8f89e2`](https://github.com/lynx-family/lynx-stack/commit/b8f89e25f106a15ba9d70f2df06dfb684cbb6633), [`f76aae9`](https://github.com/lynx-family/lynx-stack/commit/f76aae9ea06abdc7022ba508d22f9f4eb00864e8), [`b8b060b`](https://github.com/lynx-family/lynx-stack/commit/b8b060b9bef722bb47bd90c33fab3922160c711d), [`d8381a5`](https://github.com/lynx-family/lynx-stack/commit/d8381a58d12af6424cab4955617251e798bdc9f1), [`214898b`](https://github.com/lynx-family/lynx-stack/commit/214898bb9c74fc9b44e68cb220a4c02485102ce2), [`ab8cee4`](https://github.com/lynx-family/lynx-stack/commit/ab8cee4bab384fa905c045c4b4b93e5d4a95d57f)]:
- @lynx-js/web-mainthread-apis@0.15.6
- @lynx-js/web-constants@0.15.6
- @lynx-js/web-worker-runtime@0.15.6
- @lynx-js/web-worker-rpc@0.15.6
## 0.15.5
### Patch Changes
- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437))
See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details.
- feat: support path() for `createQuerySelector` ([#1456](https://github.com/lynx-family/lynx-stack/pull/1456))
- Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root.
- Implemented endpoint and handler registration in both background and UI threads.
- Implemented `nativeApp.getPathInfo()`
- fix: when `onNativeModulesCall` is delayed in mounting, the NativeModules execution result may be undefined. ([#1457](https://github.com/lynx-family/lynx-stack/pull/1457))
- fix: `onNativeModulesCall` && `onNapiModulesCall` use getter to get. ([#1466](https://github.com/lynx-family/lynx-stack/pull/1466))
- Updated dependencies [[`29434ae`](https://github.com/lynx-family/lynx-stack/commit/29434aec853f14242f521316429cf07a93b8c371), [`fb7096b`](https://github.com/lynx-family/lynx-stack/commit/fb7096bb3c79166cd619a407095b8206eccb7918)]:
- @lynx-js/web-mainthread-apis@0.15.5
- @lynx-js/web-constants@0.15.5
- @lynx-js/web-worker-runtime@0.15.5
- @lynx-js/web-worker-rpc@0.15.5
## 0.15.4
### Patch Changes
- feat: support `__ElementFromBinary` ([#1391](https://github.com/lynx-family/lynx-stack/pull/1391))
- fix: crash on chrome<96 ([#1361](https://github.com/lynx-family/lynx-stack/pull/1361))
https://github.com/wasm-bindgen/wasm-bindgen/issues/4211#issuecomment-2505965903
https://github.com/WebAssembly/binaryen/issues/7358
The rust toolchain enables WASM feature `reference types` by default.
However this feature is not supported by chromium lower than version 96
Therefore we found a workaround for it.
In this implementation we detect if browser supports `reference types` first.
If user's browser supported it, we load the wasm file with `reference types` on, otherwise we load the wasm file with `reference types` off.
- Updated dependencies [[`22ca433`](https://github.com/lynx-family/lynx-stack/commit/22ca433eb96b39724c6eb47ce0a938d291bbdef2), [`8645d12`](https://github.com/lynx-family/lynx-stack/commit/8645d1240ecb2005da52ab2ffeb10a5d08cc9cc2), [`143e481`](https://github.com/lynx-family/lynx-stack/commit/143e481b4353b3c3d2e8d9cc4f201442ca56f097)]:
- @lynx-js/web-mainthread-apis@0.15.4
- @lynx-js/web-constants@0.15.4
- @lynx-js/web-worker-runtime@0.15.4
- @lynx-js/web-worker-rpc@0.15.4
## 0.15.3
### Patch Changes
- fix: improve compatibility with legacy template ([#1337](https://github.com/lynx-family/lynx-stack/pull/1337))
avoid "object Object" error for old version rspeedy outputs
- Updated dependencies [[`0da5ef0`](https://github.com/lynx-family/lynx-stack/commit/0da5ef03e41f20e9f8019c6dc03cb4a38ab18854)]:
- @lynx-js/web-constants@0.15.3
- @lynx-js/web-mainthread-apis@0.15.3
- @lynx-js/web-worker-runtime@0.15.3
- @lynx-js/web-worker-rpc@0.15.3
## 0.15.2
### Patch Changes
- feat: support SSR for all-on-ui ([#1029](https://github.com/lynx-family/lynx-stack/pull/1029))
- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292))
We found that in browser there is no simple tool to decode a base64 string
Therefore we move the data to `ssr` attribute
Also fix some ssr issues
- feat: support \_\_MarkTemplateElement, \_\_MarkPartElement and \_\_GetTemplateParts for all-on-ui ([#1275](https://github.com/lynx-family/lynx-stack/pull/1275))
- feat: mark template elements for SSR and update part ID handling ([#1286](https://github.com/lynx-family/lynx-stack/pull/1286))
- Updated dependencies [[`cebda59`](https://github.com/lynx-family/lynx-stack/commit/cebda592ac5c7d152c877c2ac5ec403d477077e1), [`1443e46`](https://github.com/lynx-family/lynx-stack/commit/1443e468a353363e29aab0d90cd8b91c232a5525), [`5062128`](https://github.com/lynx-family/lynx-stack/commit/5062128c68e21abcf276ebcb40d7cc8f6e54244b), [`f656b7f`](https://github.com/lynx-family/lynx-stack/commit/f656b7f0d390d69c0da0d11a6c9b3f66ae877ac8)]:
- @lynx-js/web-mainthread-apis@0.15.2
- @lynx-js/web-constants@0.15.2
- @lynx-js/web-worker-runtime@0.15.2
- @lynx-js/web-worker-rpc@0.15.2
## 0.15.1
### Patch Changes
- Updated dependencies []:
- @lynx-js/web-mainthread-apis@0.15.1
- @lynx-js/web-worker-runtime@0.15.1
- @lynx-js/web-constants@0.15.1
- @lynx-js/web-worker-rpc@0.15.1
## 0.15.0
### Minor Changes
- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254))
**THIS IS A BREAKING CHANGE**
**You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0**
For SSR and better performance, we moved the lynx's exposure system from web-element to web-core.
Before this commit, we create Intersection observers by creating HTMLElements.
After this commit, we will create such Intersection observers after dom stabled.
Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features.
### Patch Changes
- refactor: improve `linear-weight-sum` performance ([#1216](https://github.com/lynx-family/lynx-stack/pull/1216))
- feat: lynx-view error event adds a new parameter: `e.detail.fileName`, which will be determined by the file location where the error occurred, either `lepus.js` or `app-service.js`. ([#1242](https://github.com/lynx-family/lynx-stack/pull/1242))
- perf: use rust implemented style transformer ([#1094](https://github.com/lynx-family/lynx-stack/pull/1094))
- Updated dependencies [[`7b75469`](https://github.com/lynx-family/lynx-stack/commit/7b75469d05dd2ec78bf6e1e54b94c8dff938eb40), [`f54a7aa`](https://github.com/lynx-family/lynx-stack/commit/f54a7aa539ad56ccd1e7e1b49d7ee59e742fe493), [`224c653`](https://github.com/lynx-family/lynx-stack/commit/224c653f370d807281fa0a9ffbb4f4dd5c9d308e)]:
- @lynx-js/offscreen-document@0.1.3
- @lynx-js/web-worker-runtime@0.15.0
- @lynx-js/web-mainthread-apis@0.15.0
- @lynx-js/web-constants@0.15.0
- @lynx-js/web-worker-rpc@0.15.0
## 0.14.2
### Patch Changes
- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178))
- chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211))
- Updated dependencies [[`e44b146`](https://github.com/lynx-family/lynx-stack/commit/e44b146b1bc2b58c0347af7fb4e4157688e07e36), [`5a9b38b`](https://github.com/lynx-family/lynx-stack/commit/5a9b38b783e611aa9761c4cd52191172270c09c7), [`6ca5b91`](https://github.com/lynx-family/lynx-stack/commit/6ca5b9106aade393dfac88914b160960a61a82f2)]:
- @lynx-js/web-mainthread-apis@0.14.2
- @lynx-js/web-worker-runtime@0.14.2
- @lynx-js/web-constants@0.14.2
- @lynx-js/web-worker-rpc@0.14.2
## 0.14.1
### Patch Changes
- feat: support BTS API `lynx.reportError` && `__SetSourceMapRelease`, now you can use it and handle it in lynx-view error event. ([#1059](https://github.com/lynx-family/lynx-stack/pull/1059))
- fix: under the all-on-ui strategy, reload() will add two page elements. ([#1147](https://github.com/lynx-family/lynx-stack/pull/1147))
- Updated dependencies [[`a64333e`](https://github.com/lynx-family/lynx-stack/commit/a64333ef28228d6b90c32e027f67bef8acbd8432), [`7751375`](https://github.com/lynx-family/lynx-stack/commit/775137521782ca5445f22029c39163c0a63bbfa5), [`b52a924`](https://github.com/lynx-family/lynx-stack/commit/b52a924a2375cb6f7ebafdd8abfbab0254eb2330)]:
- @lynx-js/web-worker-runtime@0.14.1
- @lynx-js/web-constants@0.14.1
- @lynx-js/web-mainthread-apis@0.14.1
- @lynx-js/web-worker-rpc@0.14.1
## 0.14.0
### Minor Changes
- refactor: the default thread-strategy will be all on ui ([#1105](https://github.com/lynx-family/lynx-stack/pull/1105))
**This is a breaking change!!!**
### Patch Changes
- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118))
You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view.
The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being.
- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065))
`init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized.
You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched.
```js
// ui thread
lynxView.initI18nResources = [
{
options: {
locale: 'en',
channel: '1',
fallback_url: '',
},
resource: {
hello: 'hello',
lynx: 'lynx web platform1',
},
},
];
lynxView.addEventListener('i18nResourceMissed', (e) => {
console.log(e);
});
// mts
_I18nResourceTranslation({
locale: 'en',
channel: '1',
fallback_url: '',
});
```
- fix: lynx-view `updateGlobalProps` method will also update globalProps, so `reload()` will use the latest updated globalProps. ([#1119](https://github.com/lynx-family/lynx-stack/pull/1119))
- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088))
- `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources:
- the result of `_I18nResourceTranslation()`
- lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()`
- `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution.
- refactor: make the opcode be a plain array ([#1051](https://github.com/lynx-family/lynx-stack/pull/1051))
#1042
- feat: The error event return value detail of lynx-view adds `sourceMap` value, the type is as follows: ([#1058](https://github.com/lynx-family/lynx-stack/pull/1058))
```
CustomEvent<{
error: Error;
sourceMap: {
offset: {
line: number;
col: number;
};
};
}>;
```
This is because web-core adds wrapper at runtime, which causes the stack offset to be different. Now you can calculate the real offset based on it.
- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085))
Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result.
- fix: --lynx-color will be removed, and if color contains `gradient` it will be processed as transparent. ([#1069](https://github.com/lynx-family/lynx-stack/pull/1069))
- Updated dependencies [[`42ed2e3`](https://github.com/lynx-family/lynx-stack/commit/42ed2e325ff38f781dc88b92cc56093a7a7164ea), [`25a04c9`](https://github.com/lynx-family/lynx-stack/commit/25a04c9e59f4b893227bdead74f2de69f6615cdb), [`0dbb8b1`](https://github.com/lynx-family/lynx-stack/commit/0dbb8b1f580d0700e2b67b92018a7a00d1494837), [`f99de1e`](https://github.com/lynx-family/lynx-stack/commit/f99de1ef60cc5a11eae4fd0acc70a490787d36c9), [`873a285`](https://github.com/lynx-family/lynx-stack/commit/873a2852fa3df9e32c48a6504160bb243540c7b9), [`afacb2c`](https://github.com/lynx-family/lynx-stack/commit/afacb2cbea7feca46c553651000625d0845b2b00), [`1861cbe`](https://github.com/lynx-family/lynx-stack/commit/1861cbead4b373e0511214999b0e100b6285fa9a)]:
- @lynx-js/web-worker-runtime@0.14.0
- @lynx-js/web-mainthread-apis@0.14.0
- @lynx-js/web-constants@0.14.0
- @lynx-js/offscreen-document@0.1.2
- @lynx-js/web-worker-rpc@0.14.0
## 0.13.5
### Patch Changes
- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945))
It's essential for SSR
- refactor: avoid to create many style element for cssog ([#1026](https://github.com/lynx-family/lynx-stack/pull/1026))
- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984))
- fix: ensure render starts after dom connected ([#1020](https://github.com/lynx-family/lynx-stack/pull/1020))
- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981))
On lynx, the `data-*` attributes have different behaviors than the HTMLElement has.
The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation.
Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string.
- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004))
- Updated dependencies [[`70b82d2`](https://github.com/lynx-family/lynx-stack/commit/70b82d23744d6b6ec945dff9f8895ab3488ba4c8), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`9499ea9`](https://github.com/lynx-family/lynx-stack/commit/9499ea91debdf73b2d31af0b31bcbc216135543b), [`50f0193`](https://github.com/lynx-family/lynx-stack/commit/50f01933942268b697bf5abe790da86c932f1dfc), [`57bf0ef`](https://github.com/lynx-family/lynx-stack/commit/57bf0ef19f1d79bc52ab6a4f0cd2939e7901d98b), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`0525fbf`](https://github.com/lynx-family/lynx-stack/commit/0525fbf38baa7a977a7a8c66e8a4d8bf34cc3b68), [`b6b87fd`](https://github.com/lynx-family/lynx-stack/commit/b6b87fd11dbc76c28f3b5022aa8c6afeb773d90f), [`c014327`](https://github.com/lynx-family/lynx-stack/commit/c014327ad0cf599b32d4182d95116b46c35f5fa5)]:
- @lynx-js/web-mainthread-apis@0.13.5
- @lynx-js/web-constants@0.13.5
- @lynx-js/offscreen-document@0.1.1
- @lynx-js/web-worker-runtime@0.13.5
- @lynx-js/web-worker-rpc@0.13.5
## 0.13.4
### Patch Changes
- feat: lynx-view supports `updateGlobalProps` method, which can be used to update lynx.\_\_globalProps ([#918](https://github.com/lynx-family/lynx-stack/pull/918))
- feat: supports `lynx.getElementById()` && `animate()`. ([#912](https://github.com/lynx-family/lynx-stack/pull/912))
After this commit, you can use `lynx.getElementById()` to get the element by id, and use `element.animate()` to animate the element.
- Updated dependencies [[`96d3133`](https://github.com/lynx-family/lynx-stack/commit/96d3133b149b61af01c5478f4dc7b0a071137d98), [`75e5b2f`](https://github.com/lynx-family/lynx-stack/commit/75e5b2ff16ecf5f7072a45cd130e653dee747461), [`569618d`](https://github.com/lynx-family/lynx-stack/commit/569618d8e2665f5c9e1672f7ee5900ec2a5179a2), [`f9f88d6`](https://github.com/lynx-family/lynx-stack/commit/f9f88d6fb9c42d3370a6622d9d799d671ffcf1a7)]:
- @lynx-js/web-mainthread-apis@0.13.4
- @lynx-js/offscreen-document@0.1.0
- @lynx-js/web-worker-runtime@0.13.4
- @lynx-js/web-constants@0.13.4
- @lynx-js/web-worker-rpc@0.13.4
## 0.13.3
### Patch Changes
- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897))
rename many internal apis to make logic be clear:
multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime)
- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881))
- code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for append one node
- bypass some JS getter for dumping SSR string
- fix: worker not released when backgroundWorkerContextCount != 1 ([#845](https://github.com/lynx-family/lynx-stack/pull/845))
- Updated dependencies [[`bb1f9d8`](https://github.com/lynx-family/lynx-stack/commit/bb1f9d845ef2395a0508666701409972e159389d), [`b6e27da`](https://github.com/lynx-family/lynx-stack/commit/b6e27daf865b0627b1c3238228a4fdf65ad87ee3), [`3d716d7`](https://github.com/lynx-family/lynx-stack/commit/3d716d79ae053b225e9bac2bbb036c968f5261e7)]:
- @lynx-js/offscreen-document@0.0.4
- @lynx-js/web-mainthread-apis@0.13.3
- @lynx-js/web-worker-runtime@0.13.3
- @lynx-js/web-constants@0.13.3
- @lynx-js/web-worker-rpc@0.13.3
## 0.13.2
### Patch Changes
- feat: allow lynx code to get JS engine provided properties on globalThis ([#786](https://github.com/lynx-family/lynx-stack/pull/786))
```
globalThis.Reflect; // this will be the Reflect Object
```
Note that `assigning to the globalThis` is still not allowed.
- perf: use v8 hint for generated javascript file ([#807](https://github.com/lynx-family/lynx-stack/pull/807))
https://v8.dev/blog/explicit-compile-hints
- feat: add new property `inject-style-rules` for LynxView ([#785](https://github.com/lynx-family/lynx-stack/pull/785))
This property allows developer to inject some style rules into the shadowroot.
It's a wrapper of https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule
- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806))
- Updated dependencies [[`03a5f64`](https://github.com/lynx-family/lynx-stack/commit/03a5f64d7d09e38903f5d1c022f36f6e68b6432d), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0), [`8cdd288`](https://github.com/lynx-family/lynx-stack/commit/8cdd28884288b9456aee3a919d6edbf72da1c67b), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0)]:
- @lynx-js/web-mainthread-apis@0.13.2
- @lynx-js/web-worker-runtime@0.13.2
- @lynx-js/web-constants@0.13.2
- @lynx-js/offscreen-document@0.0.3
- @lynx-js/web-worker-rpc@0.13.2
## 0.13.1
### Patch Changes
- fix: some inline style properties cause crash ([#647](https://github.com/lynx-family/lynx-stack/pull/647))
add support for the following css properties
- mask
- mask-repeat
- mask-position
- mask-clip
- mask-origin
- mask-size
- gap
- column-gap
- row-gap
- image-rendering
- hyphens
- offset-path
- offset-distance
- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641))
now we support
- main-thread:bindtouchstart
- main-thread:bindtouchend
- main-thread:bindtouchmove
- main-thread:bindtouchcancel
- feat: add SystemInfo.screenWidth and SystemInfo.screenHeight ([#641](https://github.com/lynx-family/lynx-stack/pull/641))
- Updated dependencies [[`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`9ad394e`](https://github.com/lynx-family/lynx-stack/commit/9ad394ea9ef28688a3b810b4051868b2a28eb7de), [`f4cfb70`](https://github.com/lynx-family/lynx-stack/commit/f4cfb70606d46cd4017254c326095432f9c6bcb8), [`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`839d61c`](https://github.com/lynx-family/lynx-stack/commit/839d61c8a329ed1e265fe2edc12a702e9592f743)]:
- @lynx-js/offscreen-document@0.0.2
- @lynx-js/web-mainthread-apis@0.13.1
- @lynx-js/web-worker-runtime@0.13.1
- @lynx-js/web-constants@0.13.1
- @lynx-js/web-worker-rpc@0.13.1
## 0.13.0
### Patch Changes
- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628))
Never assign `SystemInfo` on worker's self object.
- feat: support thread strategy `all-on-ui` ([#625](https://github.com/lynx-family/lynx-stack/pull/625))
```html
<lynx-view thread-strategy="all-on-ui"></lynx-view>
```
This will make the lynx's main-thread run on the UA's main thread.
Note that the `all-on-ui` does not support the HMR & chunk splitting yet.
- fix(web): css selector not work for selectors with combinator and pseudo-class on WEB ([#608](https://github.com/lynx-family/lynx-stack/pull/608))
like `.parent > :not([hidden]) ~ :not([hidden])`
you will need to upgrade your `react-rsbuild-plugin` to fix this issue
- Updated dependencies [[`4ee0465`](https://github.com/lynx-family/lynx-stack/commit/4ee0465f6e5846a0d038b49d2a7c95e87c9e5c77), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`06bb78a`](https://github.com/lynx-family/lynx-stack/commit/06bb78a6b93d4a7be7177a6269dd4337852ce90d), [`5a3d9af`](https://github.com/lynx-family/lynx-stack/commit/5a3d9afe52ba639987db124ca35580261e0718b5), [`5269cab`](https://github.com/lynx-family/lynx-stack/commit/5269cabef7609159bdd0dd14a03c5da667907424), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`2b069f8`](https://github.com/lynx-family/lynx-stack/commit/2b069f8786c95bdb9ac1f35091f05f7fd3b52225)]:
- @lynx-js/web-mainthread-apis@0.13.0
- @lynx-js/web-worker-runtime@0.13.0
- @lynx-js/web-constants@0.13.0
- @lynx-js/offscreen-document@0.0.1
- @lynx-js/web-worker-rpc@0.13.0
## 0.12.0
### Minor Changes
- feat: improve compatibility for chrome 108 & support linear-gradient for nested x-text ([#590](https://github.com/lynx-family/lynx-stack/pull/590))
**This is a breaking change**
- Please upgrade your `@lynx-js/web-elements` to >=0.6.0
- Please upgrade your `@lynx-js/web-core` to >=0.12.0
- The compiled lynx template json won't be impacted.
On chrome 108, the `-webkit-background-clip:text` cannot be computed by a `var(--css-var-value-text)`
Therefore we move the logic into style transformation logic.
Now the following status is supported
```
<text style="color:linear-gradient()">
<text>
<text>
</text>
```
### Patch Changes
- feat: allow user to implement custom template load function ([#587](https://github.com/lynx-family/lynx-stack/pull/587))
```js
lynxView.customTemplateLoader = (url) => {
return (await (await fetch(url, {
method: 'GET',
})).json());
};
```
- feat: support mts event with target methods ([#564](https://github.com/lynx-family/lynx-stack/pull/564))
After this commit, developers are allowed to invoke `event.target.setStyleProperty` in mts handler
- fix: crash on removing a id attribute ([#582](https://github.com/lynx-family/lynx-stack/pull/582))
- Updated dependencies [[`f1ca29b`](https://github.com/lynx-family/lynx-stack/commit/f1ca29bd766377dd46583f15e1e75bca447699cd)]:
- @lynx-js/web-worker-runtime@0.12.0
- @lynx-js/web-constants@0.12.0
- @lynx-js/web-worker-rpc@0.12.0
## 0.11.0
### Minor Changes
- feat: upgrade @lynx-js/lynx-core to 0.1.2 ([#465](https://github.com/lynx-family/lynx-stack/pull/465))
refactor some internal logic
- \_\_OnLifeCycleEvent
- \_\_OnNativeAppReady
### Patch Changes
- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495))
now the main-thread:bind handler could be invoked. The params of the handler will be implemented later.
- feat: allow multi lynx-view to share bts worker ([#520](https://github.com/lynx-family/lynx-stack/pull/520))
Now we allow users to enable so-called "shared-context" feature on the Web Platform.
Similar to the same feature for Lynx iOS/Android, this feature let multi lynx cards to share one js context.
The `lynx.getSharedData` and `lynx.setSharedData` are also supported in this commit.
To enable this feature, set property `lynxGroupId` or attribute `lynx-group-id` before a lynx-view starts rendering. Those card with same context id will share one web worker for the bts scripts.
- perf: dispatchLynxViewEventEndpoint is a void call ([#506](https://github.com/lynx-family/lynx-stack/pull/506))
- Updated dependencies [[`ea42e62`](https://