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:
- 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::asyncto 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 |