Repository navigation
chore: sync master into dev - #3573
Conversation
…sign the forwarded ref during commit (useCombinedRef) (clientIO#3455)
…IO#3467) Co-authored-by: Claude Fable 5 <[email protected]>
…O#3478) Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…rable dev dependencies (clientIO#3559)
* fix: harden core against untrusted graph JSON - mvc.$.parseHTML() removes all <script> elements - util.setByPath()/unsetByPath() ignore __proto__ as the last segment - dia.Graph resolves cell and layer `type` only to dia.Cell/dia.GraphLayer constructors (new internal isMarkedConstructor(); GRAPH_LAYER_MARKER moved to the prototype like the other markers) - dia.Paper.defineFilter() ignores names inherited from Object.prototype - util.filter escapes the filter arguments - util.sanitizeHTML() removes unsafe elements and srcdoc, and normalizes case, whitespace and control characters before checking URL schemes * feat: add @joint/sanitize package Sanitizers for untrusted graph JSON and HTML. Works with @joint/core 4.1 and later (peer dependency `>=4.1.0 <5`). - sanitizeGraphJSON(), sanitizeCellJSON(), sanitizeCellAttributes() and the allowlist sanitizeHTML() - uses only the public @joint/core API - removes filters with arguments which could inject markup and cells whose `type` resolves to a function which is not a cell constructor, so the output is safe with unpatched @joint/core versions as well - the UMD build extends `joint.util` --------- Co-authored-by: Roman Bruckner <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ize build tools, refresh http-cache-semantics (clientIO#3570)
Merge master into dev while preserving dev APIs and state management. Include incoming regression tests and defer measurement notifications until transaction commits.
There was a problem hiding this comment.
🟡 Changes recommended
An abort during an export callback can leave an underlying promise rejection unhandled and potentially terminate a Node process, while span-based controls in three examples remain inaccessible to keyboard users.
4 open issues
If an export callback aborts the signal,layout()has already passed its initial abort check, but… · New The zoom actions are attached only through click handlers, but these spans are not focusable or… · New The zoom controls have only click handlers, and these spans cannot receive keyboard focus or native… · New These actions are wired only toclicklisteners, but spans are neither keyboard-focusable nor… · New
What changed in this PR
Synchronizes released master changes into dev while preserving dev’s newer React store architecture and router APIs.
Changes:
- Integrates React measurement handling, including deferred transaction notifications, and updates regression tests.
- Incorporates core/router fixes, ELK layout support, sanitization, and runner-independent SVG mocking.
- Refreshes dependencies and build/test tooling, modernizes examples, and removes obsolete infrastructure.
This pull request requires changes. The following issues remain unresolved:
- Critical —
packages/joint-layout-elk/src/abort.mts:22: Aborting from an export callback can leave the underlying layout promise without a rejection handler, potentially terminating a Node process. Attach handlers before checkingsignal.aborted. - Moderate —
examples/layout-elk-containers-and-ports-ts/index.html:17: Click-only zoom spans are inaccessible to keyboard users. Replace them with native buttons. - Moderate —
examples/layout-elk-defaults-ts/index.html:17(3 votes): Zoom spans lack keyboard focus, activation, and button semantics. Replace them with native buttons. - Moderate —
examples/layout-elk-rectpacking-ts/index.html:42: Shuffle, add-file, and zoom spans lack keyboard operation and button semantics. Use native buttons. - Moderate —
examples/vue-js/src/components/TaskCard.vue:52(1 vote): The status selector lacks an accessible name. Add an associated label or anaria-labelthat includes the task title.
| File | Description |
|---|---|
SECURITY.md |
Documents sanitization of untrusted graph data. |
packages/joint-vitest-plugin-mock-svg/vitest.workspace.ts |
Removes deprecated workspace configuration. |
packages/joint-vitest-plugin-mock-svg/vitest.config.ts |
Configures Vitest projects. |
packages/joint-vitest-plugin-mock-svg/tsconfig.json |
Updates declaration-build settings. |
packages/joint-vitest-plugin-mock-svg/test/vue/tsconfig.node.json |
Removes obsolete Node configuration. |
packages/joint-vitest-plugin-mock-svg/test/vue/tsconfig.json |
Updates Vue fixture type checking. |
packages/joint-vitest-plugin-mock-svg/test/react/tsconfig.json |
Updates React fixture type checking. |
packages/joint-vitest-plugin-mock-svg/src/index.ts |
Exports mock types and explains dependency resolution. |
packages/joint-vitest-plugin-mock-svg/mocks/vite.config.ts |
Externalizes the shared mock package. |
packages/joint-vitest-plugin-mock-svg/CHANGELOG.md |
Records released mock changes. |
packages/joint-vitest-plugin-mock-svg/.gitignore |
Simplifies ignored artifacts. |
packages/joint-sanitize/src/index.mjs |
Exposes graph and HTML sanitizers. |
packages/joint-sanitize/SECURITY.md |
Adds security reporting guidance. |
packages/joint-sanitize/README.md |
Documents sanitizer usage and options. |
packages/joint-sanitize/eslint.config.mjs |
Configures package linting. |
packages/joint-sanitize/coverage.json |
Defines coverage thresholds. |
packages/joint-sanitize/CHANGELOG.md |
Records the package release. |
packages/joint-sanitize/.gitignore |
Ignores generated artifacts. |
packages/joint-router-avoid/src/RouterService.mts |
Cancels queued passes superseded by startup. |
packages/joint-router-avoid/src/providers/MainThreadProvider.mts |
Aligns incremental completion events and batching. |
packages/joint-router-avoid/package.json |
Updates release and tooling versions. |
packages/joint-router-avoid/karma.conf.js |
Resolves Chrome asynchronously. |
packages/joint-router-avoid/CHANGELOG.md |
Records routing fixes. |
packages/joint-react/vite.config.ts |
Removes the Markdown plugin. |
packages/joint-react/src/utils/scheduler.ts |
Adds deferred error propagation. |
packages/joint-react/src/utils/__tests__/scheduler.test.ts |
Makes the no-op assertion explicit. |
packages/joint-react/src/store/paper-store.ts |
Connects measurement settling to render-pass events. |
packages/joint-react/src/store/index.ts |
Removes the old observer export. |
packages/joint-react/src/store/graph-projection.ts |
Separates projection from measurement callbacks. |
packages/joint-react/src/store/__tests__/state-container.test.ts |
Updates length assertions. |
packages/joint-react/src/store/__tests__/graph-store-features.test.ts |
Uses the measurement controller API. |
packages/joint-react/src/store/__tests__/graph-projection.test.ts |
Updates a snapshot-length assertion. |
packages/joint-react/src/state/data-mapping/__tests__/link-mapper.test.ts |
Updates a floating-point assertion. |
packages/joint-react/src/state/data-mapping/__tests__/convert-labels-reverse.test.ts |
Updates floating-point assertions. |
packages/joint-react/src/presets/__tests__/preset-coverage.test.ts |
Updates a collection-length assertion. |
packages/joint-react/src/presets/__tests__/link-markers.test.ts |
Updates marker-length assertions. |
packages/joint-react/src/mvc/__tests__/paper-view-hot-reload.test.ts |
Uses the instance matcher. |
packages/joint-react/src/internal.ts |
Relocates the auto-size constant export. |
packages/joint-react/src/index.ts |
Relocates public measurement type exports. |
packages/joint-react/src/hooks/use-measure-element.tsx |
Uses measurement observation and invalidates committed views. |
packages/joint-react/src/hooks/use-create-portal-paper.tsx |
Removes global measurement-readiness props. |
packages/joint-react/src/hooks/use-are-elements-measured.ts |
Removes the obsolete readiness hook. |
packages/joint-react/src/hooks/__tests__/use-on-paper-events.test.tsx |
Strengthens mounting and subscription assertions. |
packages/joint-react/src/hooks/__tests__/use-on-graph-events.test.tsx |
Updates subscription-count assertions. |
packages/joint-react/src/hooks/__tests__/use-on-elements-measured.compiler.test.tsx |
Runs measurement specifications under React Compiler. |
packages/joint-react/src/hooks/__tests__/use-on-elements-measured-events.test.tsx |
Updates measurement imports and specification reference. |
packages/joint-react/src/hooks/__tests__/use-markup.test.tsx |
Makes cleanup behavior explicit. |
packages/joint-react/src/hooks/__tests__/use-graph-transaction.test.tsx |
Removes an obsolete lint suppression. |
packages/joint-react/src/hooks/__tests__/use-create-portal-paper.test.tsx |
Adds grid and transform assertions. |
packages/joint-react/src/hooks/__tests__/use-cells.type.test.ts |
Explains the compile-only assertion exemption. |
packages/joint-react/src/hooks/__tests__/use-cells.test.tsx |
Aligns assertions and lint handling. |
packages/joint-react/src/hooks/__tests__/use-cells-reactivity.test.tsx |
Aligns assertions and lint handling. |
packages/joint-react/src/hooks/__tests__/use-cell.type.test.ts |
Explains the compile-only assertion exemption. |
packages/joint-react/src/hooks/__tests__/use-cell.test.tsx |
Updates render-count assertions. |
packages/joint-react/src/hooks/__tests__/use-cell-setters.test.tsx |
Updates graph-size assertions. |
packages/joint-react/src/components/svg-text/__tests__/svg-text.test.tsx |
Adds explicit rendering assertions. |
packages/joint-react/src/components/paper/render-element/paper-element-item.tsx |
Settles rendered content through the measurement controller. |
packages/joint-react/src/components/paper/render-element/__tests__/paper-html-overlay.test.tsx |
Updates overlay-count assertions. |
packages/joint-react/src/components/graph/graph-provider.tsx |
Relocates the measurement type import. |
packages/joint-react/src/components/graph/__tests__/graph-provider-mixed-mode.test.tsx |
Updates snapshot-length assertions. |
packages/joint-react/src/components/graph/__tests__/graph-provider-controlled-reset.test.tsx |
Updates reset-count assertions. |
packages/joint-react/src/components/graph/__tests__/external-graph-undo.test.tsx |
Updates the graph-size assertion. |
packages/joint-react/bench/save-baseline.ts |
Removes an obsolete lint suppression. |
packages/joint-react/bench/hooks-benchmark.test.ts |
Updates benchmark task-count assertions. |
packages/joint-react/bench/graph-projection-benchmark.test.ts |
Updates the task-count assertion. |
packages/joint-react/bench/graph-batch-update.bench.test.ts |
Checks benchmark task completion. |
packages/joint-react/bench/drag-frame.bench.test.ts |
Checks benchmark task completion. |
packages/joint-react/bench/controlled-mode.bench.test.ts |
Updates benchmark task-count assertions. |
packages/joint-react/bench/container-ops.bench.test.ts |
Checks benchmark task completion. |
packages/joint-mock-svg/vite.config.ts |
Configures ESM and CommonJS bundles. |
packages/joint-mock-svg/tsconfig.json |
Configures declaration generation. |
packages/joint-mock-svg/test/jest/tsconfig.json |
Configures Jest fixture type checking. |
packages/joint-mock-svg/test/jest/src/setup.ts |
Installs SVG mocks for tests. |
packages/joint-mock-svg/test/jest/jest.config.cjs |
Configures the JSDOM integration fixture. |
packages/joint-mock-svg/test/jest/babel.config.cjs |
Transforms TypeScript test sources. |
packages/joint-mock-svg/SECURITY.md |
Adds security reporting guidance. |
packages/joint-mock-svg/README.md |
Documents setup and mock types. |
packages/joint-mock-svg/LICENSE |
Adds the package license. |
packages/joint-mock-svg/eslint.config.mjs |
Configures package linting. |
packages/joint-mock-svg/CHANGELOG.md |
Records the initial release. |
packages/joint-mock-svg/.gitignore |
Ignores generated artifacts. |
packages/joint-layout-msagl/package.json |
Refreshes build and browser-test dependencies. |
packages/joint-layout-msagl/karma.conf.js |
Resolves Chrome asynchronously. |
packages/joint-layout-elk/tsconfig.json |
Defines package TypeScript settings. |
packages/joint-layout-elk/tsconfig.esm.json |
Configures ESM output. |
packages/joint-layout-elk/tsconfig.cjs.json |
Configures CommonJS build settings. |
packages/joint-layout-elk/test/types/tsconfig.json |
Configures API type tests. |
packages/joint-layout-elk/test/types/assert.mts |
Adds type-level assertion utilities. |
packages/joint-layout-elk/test/index.html |
Adds the browser test harness. |
packages/joint-layout-elk/src/types/index.mts |
Exposes public ELK-facing types. |
packages/joint-layout-elk/src/mainThreadElk.mts |
Lazily loads main-thread ELK. |
packages/joint-layout-elk/src/index.mts |
Defines the public package exports. |
packages/joint-layout-elk/src/elk.worker.mts |
Adds the published worker entry point. |
packages/joint-layout-elk/src/defaultElk.mts |
Shares a lazily initialized ELK instance. |
packages/joint-layout-elk/src/cells.mts |
Partitions and deduplicates layout cells. |
packages/joint-layout-elk/src/abort.mts |
Adds cancellation helpers. |
packages/joint-layout-elk/SECURITY.md |
Adds security reporting guidance. |
packages/joint-layout-elk/eslint.config.mjs |
Configures package linting. |
packages/joint-layout-elk/coverage.json |
Defines coverage thresholds. |
packages/joint-layout-elk/CHANGELOG.md |
Records the initial release. |
packages/joint-layout-elk/.gitignore |
Ignores generated artifacts. |
packages/joint-layout-directed-graph/package.json |
Refreshes build and test dependencies. |
packages/joint-layout-directed-graph/karma.conf.js |
Resolves Chrome asynchronously. |
packages/joint-eslint-config/package.json |
Updates SonarJS lint rules. |
packages/joint-core/types/util.d.ts |
Allows undefined default sources. |
packages/joint-core/types/linkTools.d.ts |
Corrects tool options and handler declarations. |
packages/joint-core/types/joint.d.ts |
Declares the embedding configuration flag. |
packages/joint-core/test/vectorizer/requirejs.html |
Loads QUnit globally for the bridge. |
packages/joint-core/test/vectorizer/require.js |
Exposes global QUnit as an AMD module. |
packages/joint-core/test/ts/vectorizer.test.ts |
Covers path conversion and rich-text types. |
packages/joint-core/test/ts/toolsView.test.ts |
Covers corrected tool declarations. |
packages/joint-core/test/ts/geometry.test.ts |
Adds geometry API type examples. |
packages/joint-core/test/jointjs/webpack.js |
Removes the legacy bundle smoke test. |
packages/joint-core/test/jointjs/webpack.html |
Removes the legacy Webpack harness. |
packages/joint-core/test/jointjs/requirejs.html |
Loads QUnit globally for the bridge. |
packages/joint-core/test/jointjs/require.js |
Exposes global QUnit as an AMD module. |
packages/joint-core/test/jointjs/mvc.collection.js |
Covers ID/CID collisions and separate indexes. |
packages/joint-core/test/jointjs/cell.js |
Covers property removal and option forwarding. |
packages/joint-core/test/jointjs/browserify.js |
Removes the legacy bundle smoke test. |
packages/joint-core/test/jointjs/browserify.html |
Removes the legacy Browserify harness. |
packages/joint-core/test/geometry/requirejs.html |
Loads QUnit globally for the bridge. |
packages/joint-core/test/geometry/require.js |
Exposes global QUnit as an AMD module. |
packages/joint-core/test/e2e/devs.js |
Removes the legacy Selenium test. |
packages/joint-core/test/e2e/chess.js |
Removes the legacy Selenium test. |
packages/joint-core/src/V/index.mjs |
Removes legacy analysis annotations only. |
packages/joint-core/src/mvc/Dom/methods.mjs |
Recognizes window objects across realms. |
packages/joint-core/src/mvc/Dom/Dom.mjs |
Fixes script removal and window wrapping. |
packages/joint-core/src/mvc/Collection.mjs |
Separates real-ID and CID indexes. |
packages/joint-core/src/linkTools/RotateLabel.mjs |
Uses computed label defaults. |
packages/joint-core/src/dia/ToolView.mjs |
Resets explicit visibility during configuration. |
packages/joint-core/src/dia/ToolsView.mjs |
Removes deferred visibility resetting. |
packages/joint-core/src/dia/symbols.mjs |
Adds marked-constructor validation. |
packages/joint-core/src/dia/Paper.mjs |
Handles replacement layers and restricts filter lookup. |
packages/joint-core/src/dia/GraphLayerCollection.mjs |
Validates layer and cell constructors. |
packages/joint-core/src/dia/GraphLayer.mjs |
Places the layer marker on its prototype. |
packages/joint-core/src/dia/Graph.mjs |
Preserves falsy port IDs in matching. |
packages/joint-core/src/dia/ElementView.mjs |
Resolves typed port IDs for proxy nodes. |
packages/joint-core/src/dia/Element.mjs |
Accepts falsy port IDs for link geometry. |
packages/joint-core/src/dia/CellView.mjs |
Centralizes typed DOM port-ID lookup. |
packages/joint-core/src/dia/Cell.mjs |
Fixes array-path removal and option forwarding. |
packages/joint-core/src/connectionPoints/index.mjs |
Uses typed port IDs for connection geometry. |
packages/joint-core/SECURITY.md |
Documents sanitization of untrusted data. |
packages/joint-core/Gruntfile.js |
Replaces configuration loading and initializes Chrome asynchronously. |
packages/joint-core/grunt/tasks/selenium.js |
Removes Selenium lifecycle tasks. |
packages/joint-core/grunt/resources/e2eBrowsers.js |
Removes obsolete browser definitions. |
packages/joint-core/grunt/config/webpack.js |
Removes legacy bundle configuration. |
packages/joint-core/grunt/config/watch.js |
Removes legacy watch tasks. |
packages/joint-core/grunt/config/ts.js |
Removes the old TypeScript task configuration. |
packages/joint-core/grunt/config/shell.js |
Runs Mocha and TypeScript directly. |
packages/joint-core/grunt/config/qunit.js |
Removes the Browserify harness reference. |
packages/joint-core/grunt/config/mochaTest.js |
Removes obsolete Mocha task configuration. |
packages/joint-core/grunt/config/karma.js |
Updates Chrome flags and exclusions. |
packages/joint-core/grunt/config/env.js |
Removes Selenium environment configuration. |
packages/joint-core/grunt/config/e2e.js |
Removes Selenium test aliases. |
packages/joint-core/grunt/config/copy.js |
Removes obsolete bundle exclusions. |
packages/joint-core/grunt/config/browserify.js |
Removes legacy bundle configuration. |
packages/joint-core/grunt/config/aliases.js |
Updates test aliases and removes obsolete tasks. |
packages/joint-core/demo/vuejs/README.md |
Removes legacy demo instructions. |
packages/joint-core/demo/vuejs/package.json |
Removes the legacy Vue workspace. |
packages/joint-core/demo/vuejs/index.html |
Removes the legacy Vue entry page. |
packages/joint-core/demo/vuejs/.gitignore |
Removes legacy demo ignores. |
packages/joint-core/demo/ts-demo/webpack.config.js |
Removes the legacy demo bundler. |
packages/joint-core/demo/ts-demo/tsconfig.json |
Removes legacy compiler settings. |
packages/joint-core/demo/ts-demo/shape.ts |
Removes the legacy shape example. |
packages/joint-core/demo/ts-demo/README.md |
Removes legacy demo instructions. |
packages/joint-core/demo/ts-demo/package.json |
Removes the legacy TypeScript workspace. |
packages/joint-core/demo/ts-demo/index.html |
Removes the legacy entry page. |
packages/joint-core/demo/ts-demo/custom.ts |
Removes the legacy namespace-extension example. |
packages/joint-core/demo/ts-demo/.gitignore |
Removes legacy demo ignores. |
packages/joint-core/demo/rough/yarn.lock |
Removes the legacy demo lockfile. |
packages/joint-core/demo/rough/package.json |
Removes the legacy RoughJS workspace. |
packages/joint-core/demo/rough/index.html |
Removes the legacy entry page. |
packages/joint-core/demo/rough/css/rough.css |
Removes legacy demo styles. |
packages/joint-core/demo/rough/.gitignore |
Removes legacy demo ignores. |
packages/joint-core/demo/elk/webpack.config.js |
Removes the legacy ELK bundler. |
packages/joint-core/demo/elk/styles.scss |
Removes legacy demo styles. |
packages/joint-core/demo/elk/src/shapes.js |
Removes legacy ELK shapes. |
packages/joint-core/demo/elk/README.md |
Removes legacy demo instructions. |
packages/joint-core/demo/elk/package.json |
Removes the legacy ELK workspace. |
packages/joint-core/demo/elk/index.js |
Removes the legacy application entry. |
packages/joint-core/demo/elk/index.html |
Removes the legacy entry page. |
packages/joint-core/demo/elk/.gitignore |
Removes legacy demo ignores. |
packages/joint-core/demo/custom-shapes/webpack.config.js |
Removes the legacy demo bundler. |
packages/joint-core/demo/custom-shapes/README.md |
Removes legacy demo instructions. |
packages/joint-core/demo/custom-shapes/package.json |
Removes the legacy custom-shapes workspace. |
packages/joint-core/demo/custom-shapes/index.html |
Removes the legacy entry page. |
packages/joint-core/demo/custom-shapes/.gitignore |
Removes legacy demo ignores. |
package.json |
Updates workspace commands, packaging, and dependency resolution. |
examples/vue-js/vite.config.js |
Configures the Vue example bundler. |
examples/vue-js/src/main.js |
Mounts the Vue application. |
examples/vue-js/src/images/icon-warning.svg |
Adds the at-risk status icon. |
examples/vue-js/src/images/icon-pending.svg |
Adds the pending status icon. |
examples/vue-js/src/images/icon-done.svg |
Adds the completed status icon. |
examples/vue-js/src/data.js |
Defines initial tasks and scale. |
examples/vue-js/src/components/TaskCard.vue |
Positions editable HTML cards over diagram elements. |
examples/vue-js/src/components/JointPaper.vue |
Manages paper lifecycle and position synchronization. |
examples/vue-js/src/components/AppToolbar.vue |
Adds zoom and reset controls. |
examples/vue-js/src/App.vue |
Connects task state with the graph. |
examples/vue-js/README.md |
Documents the modern Vue example. |
examples/vue-js/package.json |
Defines the Vue/Vite workspace. |
examples/vue-js/index.html |
Adds the application entry page. |
examples/vue-js/.gitignore |
Ignores example artifacts. |
examples/tree-of-life/package.json |
Updates Webpack tooling. |
examples/spreadsheet-shapes-with-handsontable-js/src/styles.scss |
Uses the read-only-cell theme variable. |
examples/spreadsheet-shapes-with-handsontable-js/src/main.js |
Adopts Handsontable theme imports and configuration. |
examples/spreadsheet-shapes-with-handsontable-js/package.json |
Updates Handsontable. |
examples/shapes-general/package.json |
Updates Webpack tooling. |
examples/offscreen-rendering/package.json |
Updates loaders and Webpack tooling. |
examples/list/package.json |
Updates loaders and Webpack tooling. |
examples/link-labels-ts/package.json |
Updates loaders and Webpack tooling. |
examples/libavoid/webpack.config.js |
Adopts the current copy-plugin API. |
examples/libavoid/package.json |
Updates loaders and Webpack tooling. |
examples/layout-msagl/package.json |
Updates Webpack tooling. |
examples/layout-elk-ts/webpack.config.js |
Removes the old ELK example bundler. |
examples/layout-elk-ts/tsconfig.json |
Removes old compiler settings. |
examples/layout-elk-ts/README.md |
Removes old example instructions. |
examples/layout-elk-rectpacking-ts/tsconfig.json |
Configures Vite-oriented type checking. |
examples/layout-elk-rectpacking-ts/src/shapes.ts |
Defines folder and file-tile shapes. |
examples/layout-elk-rectpacking-ts/README.md |
Explains rectangle-packing behavior and controls. |
examples/layout-elk-rectpacking-ts/package.json |
Defines the rectangle-packing workspace. |
examples/layout-elk-rectpacking-ts/index.html |
Adds packing and zoom controls. |
examples/layout-elk-rectpacking-ts/.gitignore |
Ignores example artifacts. |
examples/layout-elk-dependency-graph-ts/tsconfig.json |
Configures Vite-oriented type checking. |
examples/layout-elk-dependency-graph-ts/src/styles.scss |
Adds canvas and toolbar styling. |
examples/layout-elk-dependency-graph-ts/README.md |
Documents worker-based ELK usage. |
examples/layout-elk-dependency-graph-ts/package.json |
Defines the dependency-graph workspace. |
examples/layout-elk-dependency-graph-ts/index.html |
Uses a Vite module entry point. |
examples/layout-elk-dependency-graph-ts/.gitignore |
Ignores example artifacts. |
examples/layout-elk-defaults-ts/tsconfig.json |
Configures Vite-oriented type checking. |
examples/layout-elk-defaults-ts/README.md |
Documents callback-free ELK usage. |
examples/layout-elk-defaults-ts/package.json |
Defines the default-layout workspace. |
examples/layout-elk-defaults-ts/index.html |
Adds the default-layout entry page and controls. |
examples/layout-elk-defaults-ts/.gitignore |
Ignores example artifacts. |
examples/layout-elk-containers-and-ports-ts/tsconfig.json |
Configures Vite-oriented type checking. |
examples/layout-elk-containers-and-ports-ts/README.md |
Documents nested-container and port layout. |
examples/layout-elk-containers-and-ports-ts/package.json |
Migrates the example to Vite and the ELK package. |
examples/layout-elk-containers-and-ports-ts/index.html |
Adds the container-layout entry page and controls. |
examples/layout-elk-containers-and-ports-ts/.gitignore |
Ignores example artifacts. |
examples/layout-directed-graph/webpack.config.js |
Adopts the current copy-plugin API. |
examples/layout-directed-graph/package.json |
Refreshes build dependencies. |
examples/isometric/package.json |
Updates Webpack tooling. |
examples/genogram-ts/TUTORIAL.md |
Corrects the layout-test filename. |
examples/genogram-ts/scripts/test-layout.mts |
Uses ESM-compatible directory resolution. |
examples/genogram-ts/README.md |
Corrects the layout-test filename. |
examples/genogram-ts/package.json |
Invokes the ESM layout-test script. |
examples/fta-js/package.json |
Updates loaders and Webpack tooling. |
examples/dwdm/package.json |
Updates loaders and Webpack tooling. |
examples/decorators/package.json |
Updates Webpack tooling. |
examples/custom-shapes-js/src/main.js |
Uses package imports and an embedded image. |
examples/custom-shapes-js/README.md |
Documents the modernized example. |
examples/custom-shapes-js/package.json |
Defines the Vite example workspace. |
examples/custom-shapes-js/index.html |
Adds the Vite entry page. |
examples/custom-shapes-js/.gitignore |
Updates ignored build artifacts. |
examples/container/package.json |
Updates Webpack tooling. |
examples/connection-points-ts/package.json |
Updates loaders and Webpack tooling. |
examples/bezier-js/package.json |
Updates loaders and Webpack tooling. |
examples/avoid-router-ts/webpack.config.js |
Adopts the current copy-plugin API. |
examples/avoid-router-ts/package.json |
Updates loaders and Webpack tooling. |
examples/angular-element-view-ts/src/main.ts |
Explicitly enables zone-based change detection. |
examples/angular-element-view-ts/README.md |
Updates the Angular requirement. |
examples/angular-element-view-ts/package.json |
Updates Angular and TypeScript dependencies. |
examples/angular-element-view-ts/angular.json |
Adopts the current Angular builders. |
examples/anchors-ts/package.json |
Updates loaders and Webpack tooling. |
CONTRIBUTING.md |
Removes the obsolete E2E command. |
CLAUDE.md |
Removes obsolete build and test references. |
.changeset/sanitize-build-tools.md |
Records a non-release tooling changeset. |
.changeset/react-measured-deferred-transactions.md |
Records deferred-transaction measurement behavior. |
.changeset/react-elements-measured-app-resize.md |
Removes the already-released measurement entry. |
.changeset/new-chrome-tests.md |
Records a non-release testing changeset. |
.changeset/fresh-locks-refresh.md |
Records a non-release dependency changeset. |
.changeset/config.json |
Updates release grouping and ignored configuration paths. |
Review effort: Balanced
|
Verified Copilot's findings against the actual source and master. All are inherited from master and are tracked separately from this synchronization:
The four Copilot inline threads are resolved with follow-up issue links. Resolution means deferred to the linked issue, not fixed in this PR. No source changes or new commits were made; the PR remains at |


Description
Merge current
masterintodevto bring in the released fixes, packages, regression tests, and dependency/build updates while preserving dev's unreleased features.The merge retains the immutable Map-backed React store, subscriptions and staged commits, HMR support, reactive grid and focus events, geometry/CSP additions, and the router's synchronous APIs and custom worker support. Master's measurement controller is integrated with that store. A regression exposed by the combination is fixed: measurement notifications wait until an asynchronous transaction commits its snapshot, including nested transactions; ordinary batches remain live.
Master's bug-fix tests are retained. The former key-subscription hook tests are adapted to dev's
useCellIds, with same-count ID replacement and reset coverage. Test assertions are aligned with the incoming lint rules without disabling checks. Existing release versions/changelogs are carried from master; unreleased dev changesets remain, except the measurement entry already released on master.Motivation and Context
Synchronization direction is master into dev. The PR targets
devand preserves its newer architecture rather than replacing it with master's implementation.Reviewed inputs: master
0ff666b5d7dab77ccf3cb599b455387f1fc894ea, devcb77aa4a649d618a5b7d07bcb3c3aff6b0ca2ee9.Validation
testpassed: typecheck, knip, duplicate-code detection, React 19/compiler with coverage (1,170 tests), and React 18 (1,129 tests). Dev's stricter coverage floors are preserved.