Skip to content

Releases: M-CreativeLab/jsar-runtime

v0.10.1

17 Sep 06:38
134a8ae

Choose a tag to compare

New Features & Improvements

DOM & Web APIs

  • Element.onclick Support: Added support for Element.onclick attribute for inline event handlers (#309)
  • Text Alignment Tests: Added comprehensive text-align test cases to fixtures/html (#313)

CSS & Styling

  • Flexbox Properties: Support parsing flex-grow and flex-shrink at computed style
  • CSS Selectors: Implement CSS nth-child() and nth-of-type() selector support (#285)
  • CSS Variables: Support CSS variables (#263)
  • Universal Selector: Support universal selector (*) in CSSOM selector parser and matching (#261)
  • Pseudo-class Selectors:
    • Implement CSS :root selector matching (#259)
    • Implement CSS :where() functional pseudo-class selector support (#258)
    • Replace Rust CSS selectors with C++ implementation and add pseudo-class support (#241)
  • Attribute Selectors: Implement CSS attribute selector support in parser and matcher (#271)
  • Background Properties: Support using background-position, background-size and background-repeat (#274)
  • Background Repeat: Background-repeat should draw from clipped area (#280)
  • Absolute Positioning: Fix absolute positioning to reference nearest positioned ancestor (#276)
  • Align Items: Correct align-items implementation (#282)

Canvas & WebGL

  • Canvas 2D: Implement strokeRect() method in Canvas 2D rendering context (#294)
  • WebGL: Implement WebGL validateProgram method (#253)

Browser & Rendering

  • Parallel Rendering: Use std::async to make each web content rendering run in parallel (#310)
  • Texture Bindings: Unbind texture bindings correctly (#221)
  • 3D Content: Add 3D world-space content bar and input box (#269)
  • Frame Rate Control: Add frame rate control to vsync and manual modes (#265)
  • Console Logging: Implement Console binding to support logging on CDP (#267)

Testing & Quality Assurance

  • Border Tests: Add comprehensive border regression test page to fixtures/html (#302)
  • Text Rendering Tests: Add comprehensive text rendering test page for fixtures (#301)
  • Flexbox Tests: Add flex-grow and flex-shrink test case in fixtures/html (#300)
  • Canvas Tests: Add comprehensive Canvas API test pages to fixtures/html (#293)
  • CSS Overflow Tests: Add comprehensive CSS overflow test file to fixtures/html (#290)
  • Layout Tests: Add flexbox and grid layout test pages (#282)

Bug Fixes & Performance

Rendering & Graphics

  • Render Queue: Correct RenderQueue sorting for positioned elements (#297)
  • Depth Writing:
    • Correct depth write only pass for web content
    • Write web content depth should be written with stencil testing (#272)
    • Correct the bar component depth writes
  • Build Fixes: Fix build errors when enabling TR_RENDERER_ENABLE_VERBOSE
  • GLSL Processing: Upgrade glsl-lang to fix the glsl preprocessing issues (#295)

DOM & Browser

  • Scroll Throttling: Implement scroll throttling in document and fix document dirty state (#289)
  • Font Manager: Maintain only one instance for font manager (#286)
  • Rendering Parameters: Tweak the web content rendering parameters

Documentation & Infrastructure

  • Commit Guidelines: Update commit message guidelines (#311)
  • Three.js Examples: Update threejs example sample

Detailed Commit History

Commit Description PR
af07862 feat(tests): add comprehensive text-align test cases to fixtures/html #313
bdf2771 fix(tests): update threejs example sample -
83a628a feat(dom): support Element.onclick attribute for inline event handlers #309
f1b92b1 docs(docs-infra): update commit message guidelines #311
4e013a3 fix(builtin_scene): use std::async to make each web content rendering run in parallel #310
f918ddf fix(builtin_scene): unbind texture bindings correctly #221
86de83e fix(renderer): fix build errors when enabling TR_RENDERER_ENABLE_VERBOSE -
562a483 add comprehensive border regression test page to fixtures/html #302
6b93031 add comprehensive text rendering test page for fixtures #301
366a058 fix(builtin_scene): tweak the web content rendering parameters -
60f3d27 add flex-grow and flex-shrink test case in fixtures/html #300
5145c14 feat(css): support parsing flex-grow and flex-shrink at computed style -
070211e fix(dom): correct RenderQueue sorting for positioned elements #297
397aac7 fix(css): fix absolute positioning to reference nearest positioned ancestor #276
c9837bb fix(dep): upgrade glsl-lang to fix the glsl preprocessing issues #295
b5a086f feat(canvas): implement strokeRect() method in Canvas 2D rendering context #294
da43422 feat(test): add comprehensive Canvas API test pages to fixtures/html #293
9156453 feat(test): add comprehensive CSS overflow test file to fixtures/html #290
1668735 fix(dom): implement scroll throttling in document and fix document dirty state #289
0b3a535 feat(webgl): implement WebGL validateProgram method #253
8b61cbe fix(browser): maintain only one instance for font manager #286
2f5296a feat(cssom): implement CSS nth-child() and nth-of-type() selector support #285
4b09aab fix(cssom): correct align-items impl and add flexbox and grid layout test pages #282
9b9cba3 fix(cssom): background-repeat should draw from clipped area #280
8e3b8ae feat(cssom): support using background-position, background-size and background-repeat #274
404457a fix(browser): correct the bar component depth writes -
8c46b02 feat(bindings): Implement Console binding to support logging on cdp #267
46a910f fix(builtin_scene): correct depth write only pass for web content -
d660b57 fix(builtin_scene): write web content depth should be written with stencil testing #272
69344ad feat(cssom): implement CSS attribute selector support in parser and matcher #271
b8bab31 feat(browser): add 3D world-space content bar and input box #269
88e86cf feat(browser): add frame rate control to vsync and manual modes #265
204c761 feat(cssom): support CSS variables #263
99b7458 feat(cssom): support universal selector (*) in CSSOM selector parser and matching #261
bb2894b feat(cssom): implement CSS :root selector matching #259
0529c45 feat(cssom): implement CSS :where() functional pseudo-class selector support #258
19dafc6 feat(cssom): replace Rust CSS selectors with C++ implementation and add pseudo-class support #241

Regression Testing Cases

File Description
fixtures/html/element-onclick-test.html Element.onclick attribute for inline event handlers (#309)
fixtures/html/text-rendering-test.html Comprehensive text rendering test page (#301)
fixtures/html/border-regression-test.html Comprehensive border regression test page (#302)
fixtures/html/layout-flexbox-grow-shrink.html Flex-grow and flex-shrink test case (#300)
fixtures/html/canvas-api-basic-drawing.html Canvas drawing operations including strokeRect() (#294)
fixtures/html/canvas-api-paths.html Canvas path operations
fixtures/html/canvas-api-state.html Canvas state management
fixtures/html/canvas-api-styles.html Canvas styling
fixtures/html/canvas-api-text.html Canvas text rendering
fixtures/html/canvas-api-transforms.html Canvas transformations
fixtures/html/canvas-api-image-data.html Canvas ImageData API
fixtures/html/css-overflow-comprehensive.html Comprehensive CSS overflow test file (#290)
fixtures/html/universal-selector-test.html Universal selector (*) in CSSOM parser and matching (#261)
fixtures/html/background-size-position-test.html Background-position, background-size and background-repeat (#274)
fixtures/html/background-position-extended-syntax-test.html Extended background-position syntax
fixtures/html/background-origin-repeat-test.html Background-repeat drawing from clipped area (#280)
fixtures/html/layout-flexbox-alignment.html Correct align-items implementation and flexbox layout (#282)
fixtures/html/layout-grid-alignment.html CSS Grid layout testing (#282)
fixtures/html/position-absolute-test.html Absolute positioning to nearest positioned ancestor (#276)
fixtures/html/dom/document_fragment_test.html DocumentFragment API
fixtures/html/dom/document_fragment_clone_test.html DocumentFragment cloning
fixtures/html/dom/document_fragment_web_api_test.html DocumentFragment Web API compliance
fixtures/html/layout-flexbox-column.html Flexbox column layouts
fixtures/html/layout-flexbox-example.html Flexbox examples
fixtures/html/layout-flexbox-nested.html Nested flexbox layouts
fixtures/html/layout-flexbox-wrap.html Flexbox wrapping
fixtures/html/layout-grid-areas.html CSS Grid areas
fixtures/html/layout-grid-auto.html CSS Grid auto placement
fixtures/html/layout-grid-example.html CSS Grid examples
fixtures/html/layout-grid-nested.html Nested CSS Grid
fixtures/html/text-antialiasing.html Text antialiasing
fixtures/html/css-gradients.html CSS gradient support
fixtures/html/webgl-conformance/validateprogram-test.html WebGL validateProgram method (#253)
fixtures/html/webgl-conformance/bufferdata-size-test.html WebGL buffer operations

v0.10.0

29 Aug 08:00
6f20b01

Choose a tag to compare

New Features & Improvements

DOM & Web APIs

  • Custom Fonts Support: Added support for custom fonts directory via JSAR_SYSTEM_FONTS_DIR environment variable (#255)
  • DocumentFragment API: Complete implementation with ParentNode interface support including cloneNode() and proper insert logic (#245, #249, #247)
  • Document API Extensions: Added support for createDocumentFragment() and createComment() methods (#235, #233)
  • Script Execution: Implemented proper blocking script execution order for HTMLScriptElement (#251)
  • Viewport Meta: Added viewport meta parsing and configuring window width & height (#237)

WebGL Enhancements

  • Buffer Operations: Implemented bufferData(target, size, usage) support in WebGL bindings (#248)
  • Vertex Operations: Added WebGL vertexAttrib and clearBuffer methods (#205)

CSS & Styling

  • CSS Selectors: Exposed selectors text at style rule level (#239)
  • CSS Filters: Implemented parsing for CSS filter and backdrop-filter properties with parameter support (#238)
  • Overflow Handling: Added support for nested CSS overflow scroll behavior (#229)

3D Graphics & Rendering

  • 3D Gaussian Splatting: Implemented PLY loader for 3D Gaussian Splatting models in <model> tag (#223)
  • Layered Rendering: Added overflow-based and layer-based rendering for web content instances (#225, #220)
  • SDF Text Rendering: Implemented Signed Distance Field text rendering for improved text anti-aliasing (#198)

Developer Tools & Debugging

  • Inspector Integration: Added content CDP (Chrome DevTools Protocol) proxy and implemented Log domain (#214)
  • Network Monitoring: Added network service to listen for network state changes (#164)

Bug Fixes & Performance

Graphics & Rendering

  • Shader Performance: Cached shader's COMPILE_STATUS to avoid blocking calls (#254)
  • Buffer Management: Fixed dataSize handling in BufferDataCommandBufferRequest
  • Framebuffer Status: Added proper response handling for CheckFramebufferStatus()
  • Texture Bindings: Fixed multiple texture bindings per target for rendering units (#215)
  • 3D Gaussian Splatting: Optimized GPU performance and compression format to use 1 texel (#212)

Build System & Tooling

  • Build Configuration: Fixed target directory configuration when directory doesn't exist
  • Package Optimization: Removed deprecated XSML support to reduce package size (#218)

Documentation & Development

  • Test Coverage: Added GLSL patcher test case
  • Documentation: Updated Rust version notes and navigator.gl type checking guide
  • Development Workflow: Updated copilot instructions for npm ci usage

v0.9.0

04 Aug 06:38
618a444

Choose a tag to compare

New Features & Improvements

CSS & Styling Enhancements

  • CSS Transform Parser: Replaced Rust CSS transform parser with C/C++ implementation for better performance (#176)
  • Background Properties: Added support for background-clip, background-origin, and background-repeat properties (#135, #125)
  • Background Blend Mode: Added support for background-blend-mode CSS property (#119)
  • Background Images: Support for background-image with url() and gradient rendering (#117, #123)
  • CSS Parsing: Enhanced CSS parsing with specified classes for background-image

HTML & DOM Features

  • HTMLInputElement: Added comprehensive HTMLInputElement support (#148)
  • HTMLIFrameElement: Added basic HTMLIFrameElement and JSAR.UniversalRenderingServer for unified rendering debugging (#127)
  • Document API: Added document.write and *.writeln methods
  • HTML Parsing: Enhanced HTML parsing with support for unquoted attribute values (#103)
  • Attribute Parsing: Support for attributes without values and improved PCDATA tag parsing
  • HTML Volume: Set HTML volume mask depth to 0.05 and added offset to remove gaps between background and borders

Rendering & Graphics

  • Layered Rendering: Support for rendering web content in layers (#172)
  • SVG Support: Added SVG image rendering capabilities (#169)
  • DPR Support: Implemented device pixel ratio support in web content rendering
  • Renderer Refactoring: Complete refactor of the builtin scene renderer
  • Render Pipeline: Refined render pipeline and improved offscreen pass with computation graph
  • Environment Mapping: Added environment mapping test files and examples
  • Layer Calculation: Calculate layer field for each LayoutObject (#174)

Inspector & Debugging

  • Chrome DevTools Protocol: Added basic CDP support with Runtime and Example domains (#121)
  • WebSocket Support: Added WebSocket support to prepare for Chrome DevTools Protocol integration (#106)
  • MDN Compatibility: Implemented MDN-compatible browser compatibility data structure (#108)
  • Inspector Logs: Added /:id/logs endpoint for better debugging
  • Enhanced Debugging: Support for unified rendering backend debugging

Examples & Testing

  • Transmute Browser: Renamed simulator to transmute_browser (#178)
  • Rendering Modes: Updated args parsing with support for mono/stereo rendering modes (#159)
  • LeaferJS Support: Added support for LeaferJS base usage in fixtures

Build & CI Improvements

  • Deployment Permissions: Added write permissions for deploy-website workflow
  • Memory Optimization: Specified Node options to increase V8 memory limits
  • Lint Fixes: Fixed various lint errors throughout the codebase

What's Changed

  • Add WebGPU backend to support the record/submit draw calls on render textures by @yorkie in #94
  • client, graphics: fix commandbuffer responses dispatching to the corr… by @yorkie in #96
  • Fix HTML parsing to support unquoted attribute values by @Copilot in #103
  • Create browser compatibility visualization webpage at /docs by @Copilot in #104
  • inspector: Add WebSocket support for Chrome DevTools Protocol integration by @Copilot in #106
  • Implement MDN-compatible browser compatibility data structure for JSAR Runtime by @Copilot in #108
  • cssom: support parsing background-image and render as a grad effect by @yorkie in #117
  • Add support for background-blend-mode and background-clip CSS properties by @Copilot in #119
  • Add basic CDP support to inspector with Runtime and MyExample domains by @Copilot in #121
  • Add CSS background-origin and background-repeat properties support by @Copilot in #125
  • Support extracting gradient data from computed image values for background rendering by @Copilot in #123
  • Add CONTRIBUTING.md to guide contributors and copilot by @Copilot in #138
  • Implement background-clip: text CSS property support in web content renderer by @Copilot in #135
  • Add technical blog posts for community promotion highlighting recent JSAR developments by @Copilot in #136
  • Add CDP Domain JSAR.UniversalRenderingServer for unified rendering backend debugging/controls by @Copilot in #127
  • client: change all web content to be transparents and add depth-only pass by @yorkie in #144
  • Add support for spatial (stereo) image rendering via spatial="stereo" attribute by @Copilot in #131
  • dom: move the native fetch() to RuntimeContext to decrease the async handles by @yorkie in #149
  • Add HTMLButtonElement support by @Copilot in #147
  • Add blog post: "I Added Stereo Rendering to Our Browser Engine — With Copilot" by @Copilot in #152
  • Implement toJson() methods for command buffer classes and enhance JSAR vGPU Profiler integration by @Copilot in #146
  • Fix createTextPath CJK glyph extraction for mixed CJK/English text by @Copilot in #151
  • Adjust click event threshold for XR Device ray interaction from 1px to 5px by @Copilot in #100
  • Fix Android crash by enabling C++ exception handling in CMake configuration by @Copilot in #156
  • Add basic HTMLIframeElement support for DOM creation and recognition by @Copilot in #162
  • Add SVG decoding and rendering support to ImageCodec with optional scaling by @Copilot in #169
  • Support rendering web content in layers by @yorkie in #172
  • Support single-view XRFrame and update desktop_opengl example for XR rendering modes with improved CLI by @Copilot in #159
  • Add HTMLInputElement support to JSAR runtime by @Copilot in #148
  • Add layer field to LayoutObject with current-node-based calculation and integrated debugging by @Copilot in #174
  • Implement configurable cube map environment renderer with enhanced mouse controls, smooth cubic easing animation, and platform-specific window styling for JSAR desktop simulator by @Copilot in #178
  • Replace Rust CSS transform parser with C/C++ implementation supporting negative values by @Copilot in #176
  • Add GitHub Action to deploy docs with custom build support to gh-pages by @Copilot in #184
  • Support configurable window dragging region for macOS examples with perfect mouse-window alignment by @Copilot in #180
  • Refactor docs HTML sections to use VitePress with complete manual documentation by @Copilot in #187
  • Release 0.9.0: Core technical improvements and feature additions by @Copilot in #188

Full Changelog: amidala-v0.8.2...amidala-v0.9.0

v0.8.2

17 Jul 12:00

Choose a tag to compare

Fixes

  • Fix the commandbuffer responses dispatching in client-side graphics

v0.8.1

16 Jul 10:48

Choose a tag to compare

Improvements

  • Optimize rendering pipeline to support offscreen rendering correctly.
  • Speed up the graphics initialization of each content process.

Fixes

  • Correct the FCP timing for actual writing to the color buffer in the shared render target.

v0.8.0

08 Jul 17:32

Choose a tag to compare

New Features & Improvements

Rendering Enhancements

  • Renderer Pipeline Overhaul
    • Replaced single onFrame tick with discrete render passes for finer-grained control over each rendering stage
    • Introduced UnityRenderPassEvent and dispatches per-pass events in OnUnityRenderEvent
    • Added new lifecycle methods (onBeforeRendering, onOpaquesRenderPass, onTransparentsRenderPass, onAfterRendering) in TrEmbedder and TrConstellation
    • Refactored renderer interfaces and updated OpenGL example to utilize new pass methods
  • Context Management
    • Introduced new ContextGLHost/ContextGLApp classes to replace legacy context storage
    • Added iterateContentRenderers API for enhanced renderer iteration
    • Implemented framebuffer attachment helpers with improved debug output including stencil state

Inspector & Debugging

  • Monitoring Capabilities:
    • Extended inspector with new /json/statistics endpoint for better runtime monitoring
    • Enhanced debug output with stencil buffer state information

DOM Updates

  • Content Manipulation
    • Added support for setting textContent property
    • Enhanced DOM element manipulation capabilities

XML Processing

  • Parser Improvements
    • Added support for parsing script/style tags as plain character data.
    • Improved XML parsing reliability for web content

Developer Experience

  • Tracing & Diagnostics:
    • Added trace support for generate-document capability in threepio
    • Enhanced debugging and development workflow

HTML & CSS Features

  • HTML Element Enhancements:
    • Added support for rendering <canvas> elements via Web Canvas API
  • CSS Features:
    • Added support for absolute and fixed positioning.
    • Added support for unit in transform property.

Fixes & Optimizations

Bug Fixes

  • Connection Management: Fixed invalid connection handling from forked child processes in hived
  • Build System: Resolved lint errors in the build process
  • Stencil Buffer: Addressed stencil buffer issues through renderer refactoring (#92)

Maintenance

  • Dependencies: Upgraded jsar-dom version for improved compatibility
  • Animations: Updated animation system components

v0.7.2-rc-20250623

23 Jun 14:24

Choose a tag to compare

Fix an issue which causes the failure to send the messages to hived, commits are:

  • hived: ignore the invalid connection from forked child processes

v0.7.2

06 Jun 10:40

Choose a tag to compare

New Features & Improvements

Rendering Enhancements

  • WebGL Improvements:
    • Optimized WebGL texture handling with anisotropic filtering.
    • Improved support for the EXT_texture_filter_anisotropic extension.
    • Enhanced WebGL context attributes for better XR compatibility.

DOM Updates

  • Event Handling:
    • Added new event constructor types including MouseEvent, PointerEvent, and XRSessionEvent.
    • Enhanced EventTarget to provide detailed event type mappings and dispatching.
  • Document Features:
    • Introduced Document.timeline for animation timelines.
    • Enhanced Document.appendStyleSheet() to manage styles dynamically.

HTML Enhancements

  • Image Element:
    • Improved <img> element to handle onload and onerror events asynchronously.
    • Optimized image decoding with fallback mechanisms for error handling.
  • Web Content Updates:
    • Added support for logical dimensions (logicalWidth and logicalHeight) for web content rendering.
    • Improved device pixel ratio handling in WebContent.

Fixes & Optimizations

Performance Optimizations

  • Rendering Pipeline:
    • Optimized text and element rendering by marking dirty nodes and reducing unnecessary updates.
    • Improved layout computation efficiency for dynamic content.
  • Event Dispatch:
    • Fixed hit testing for mouse events to handle mouseleave and mouseout scenarios properly.

Bug Fixes

  • Fixed issues with CSSStyleDeclaration caching to ensure seamless style updates.
  • Resolved memory leaks in image decoding processes.
  • Addressed rendering bugs for logical dimensions in WebContent.
  • Fixed service memory leaks in destroying content processes.
  • Added maximum size for the image and texture at client-side and server-side to prevent out of memory issues.
  • Fixed the resource caching issues, now the caching follows the standard HTTP caching rules.

amidala-v0.3.1-alpha.20240115

15 Jan 14:35

Choose a tag to compare

update jsar-dom version

amidala-v0.3.1-alpha.1

12 Jan 21:00

Choose a tag to compare

generate oss path always by posix path