Skip to content

chore(vtable): upgrade VRender to 1.1.0-alpha.26#5164

Open
xuefei1313 wants to merge 18 commits into
developfrom
feat/upgrade-vrender-to-1.x
Open

chore(vtable): upgrade VRender to 1.1.0-alpha.26#5164
xuefei1313 wants to merge 18 commits into
developfrom
feat/upgrade-vrender-to-1.x

Conversation

@xuefei1313

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade VTable VRender-related packages to 1.1.0-alpha.26 without changing VTable package versions.
  • Remove old VRender state/runtime usage patterns and keep imports on public VRender subpaths.
  • Merge latest develop and preserve VRender alpha.26 contracts for app ownership, state animation, and strict scenegraph insertion.
  • Add regression coverage for strict ancestor insertion handling in scenegraph cell/text insertion.

Validation

  • rush update
  • packages/vtable rushx compile
  • packages/vtable rushx build
  • packages/vtable rushx test
  • packages/vtable-plugins rushx compile
  • packages/vtable-plugins rushx test --runInBand
  • rush test --only tag:package
  • eslint on changed files with --quiet
  • git diff --check

Notes

  • rush test --only tag:package passed with warnings from existing MaxListenersExceededWarning and ts-jest sourceMap: false configuration.
  • VTable browser smoke page was started locally at http://localhost:3003/ for manual render testing.
  • Node/server-side smoke via packages/vtable rushx test-nodejs was blocked by a missing local canvas module in this environment.

xuefei1313 and others added 14 commits May 14, 2026 14:18
VRender treats ordinary animation frames as transient and now prefers app-scoped
stage ownership.

VTable writes fade-appear final opacity before animating from hidden state,
creates internal stages from VRender apps, and treats supplied stages/apps as
borrowed resources.

The default path no longer performs VTable-side load*Env/register* bootstrap.
The remaining legacy bridge is limited to custom contribution wiring and is
covered by smoke tests.

Constraint: Animation endpoints must not become static truth.
Constraint: App creators own normal env/bootstrap setup.
Rejected: Keep root env/register bootstrap | duplicates app creator ownership.
Rejected: Release external stage/app | violates borrowed-resource ownership.
Confidence: high
Scope-risk: moderate
Directive: Do not restore default load*Env/register* bootstrap without VRender review.
Tested: Targeted VRender app, lifecycle, renderer bridge, and appear Jest suites.
Tested: tsc --noEmit --pretty false.
Tested: Node 20.19.6 canvas smoke for node app and VTable image buffer.
Not-tested: Real-device wx/lynx/harmony/taro/feishu/tt smoke.
VRender 1.1.0-alpha.25 removes ordinary graphic stateProxy and moves shared
app ownership behind @visactor/vrender/entries/shared.

VTable now accepts states and sharedStateDefinitions on custom layout surfaces
and resolves managed stages through the shared entry. The runtime bridge mirrors
VTable renderer contributions into the VRender runtime installer context and
reactivates both app-scoped and legacy envs before stage creation.

Jest configs share the VRender package-export subpath mapper so package-level
pre-push tests resolve alpha.25 CJS files consistently outside the VTable root.

Constraint: VRender 1.1.0-alpha.25 removes graphic.stateProxy
Constraint: VRender recommends the shared entry for managed apps
Rejected: Keep VTable-owned app/refcount map | duplicates VRender shared registry
Rejected: Preserve stateProxy adapter | keeps a removed VRender API as user surface
Confidence: high
Scope-risk: moderate
Directive: Do not reintroduce stateProxy on ordinary graphics
Directive: Use states or sharedStateDefinitions with resolver definitions
Tested: rush test --only tag:package
Tested: packages/vtable rushx test --runInBand (54 suites, 224 tests)
Tested: packages/vtable rushx compile
Tested: packages/react-vtable rushx compile
Tested: targeted eslint for touched files, warnings only and no errors
Tested: old VRender API rg scans returned no matches
Tested: git diff --check
Not-tested: Full React/OpenInula browser demo smoke
VRender 1.1.0-alpha.26 is the current prerelease baseline for the

app-scoped runtime and stabilized D3 state semantics. Keep the VTable

package version unchanged while aligning direct VRender packages, Rush

overrides, and the lockfile to the same alpha.26 build.

Remove the stale commented internal VRender import so this package keeps

using public VRender surfaces.

Constraint: Do not modify the VTable package version

Constraint: Keep VRender packages aligned on 1.1.0-alpha.26

Rejected: Deep import VRender internals | use public package surfaces

Confidence: high

Scope-risk: moderate

Directive: Keep package deps and Rush global overrides in sync

Tested: rush update

Tested: packages/vtable rushx compile

Tested: packages/react-vtable rushx compile

Tested: packages/vtable-gantt rushx compile

Tested: packages/vtable rushx test --runInBand

Tested: packages/vtable rushx build

Tested: rush test --only tag:package

Tested: eslint text-measure.ts --quiet

Tested: prettier --check changed package/json/ts files

Tested: git diff --check

Not-tested: packages/vtable rushx test-nodejs | local canvas module missing
Bring the VRender 1.x upgrade branch current with develop before opening the PR.

Constraint: Preserve the already committed VRender alpha.26 upgrade work

Confidence: medium

Scope-risk: moderate

Directive: Re-run package verification after this integration merge

Tested: git merge-tree --write-tree HEAD origin/develop
The branch already ignores .omx, but historical runtime files were tracked

and still appeared in the PR diff. Remove them from version control while

leaving local runtime files ignored.

Constraint: Do not delete local OMX runtime state from disk

Confidence: high

Scope-risk: narrow

Directive: Keep .omx ignored and out of review diffs

Tested: git ls-files .omx
The develop merge surfaced stricter VRender tree insertion behavior.

It also exposed tests that depended on stale column/layout state.

Keep VTable public state stable and adapt plugin tests to alpha.26 public subpaths.

Constraint: VRender alpha.26 rejects inserting an attached graphic as a child
Constraint: Plugin tests import the built VTable CJS entry
Rejected: Deep import VRender internals | public subpaths must remain the boundary
Confidence: high
Scope-risk: moderate
Directive: Do not reintroduce clear/add fallbacks for VRender tree reuse
Tested: rush update
Tested: packages/vtable rushx compile
Tested: packages/vtable rushx build
Tested: packages/vtable rushx test --runInBand
Tested: packages/vtable-plugins rushx compile
Tested: packages/vtable-plugins rushx test --runInBand
Tested: rush test --only tag:package
Tested: eslint changed files --quiet
Tested: git diff --check
Tested: pre-commit lint-staged eslint/prettier
VRender alpha.26 rejects ancestor insertions instead of loose tree mutation.

VTable now uses the actual inserted cell group when a defensive clone is needed.

This keeps later content append calls attached to the live scenegraph container.

Constraint: VRender alpha.26 rejects ancestor insertBefore/insertAfter operations

Constraint: Cell creators append content after addCellGroup inserts the container

Rejected: Swallow insert errors | content would be appended to a detached group

Confidence: high

Scope-risk: moderate

Directive: Keep cell creators using the Group.addCellGroup return value

Tested: packages/vtable rushx compile

Tested: packages/vtable rushx build

Tested: packages/vtable rushx test

Tested: scenegraph strict insertion regression tests

Tested: rush test --only tag:package

Tested: eslint changed files --quiet

Tested: git diff --check
Merge the latest develop release and changelog updates into the VRender alpha.26 PR branch.

Conflicts keep develop's 1.26.2 workspace policy while preserving the alpha.26 VRender package set. ListTable also keeps develop's hierarchyState cleanup and frozen range expectation.

Constraint: PR target develop advanced to 5f97a8c

Constraint: git diff --check reports whitespace in merged release markdown files

Rejected: Accept develop's VRender 1.0.41 deps | would undo the alpha.26 upgrade

Confidence: high

Scope-risk: moderate

Directive: Do not revert VRender packages below 1.1.0-alpha.26 in this PR

Tested: rush update

Tested: packages/vtable rushx compile

Tested: packages/vtable-plugins rushx compile

Tested: targeted ListTable and PivotTable tests

Tested: packages/vtable-plugins rushx test --runInBand

Tested: rush test --only tag:package
@xuefei1313 xuefei1313 marked this pull request as ready for review June 16, 2026 11:14
Bugserver build runs rush install before bundling.

The PR branch still had workspace:1.26.2-none ranges after develop moved to 1.26.2.

Rush split those dependencies into mismatching groups and failed install.

Align the workspace ranges and refresh alpha package integrity values.

Constraint: develop now uses 1.26.2 workspace ranges

Constraint: alpha packages have current registry integrity values

Rejected: Downgrade VRender packages | would undo the VRender upgrade scope

Confidence: high

Scope-risk: narrow

Directive: Keep internal workspace ranges on 1.26.2 while targeting develop

Tested: rush check --verbose

Tested: rush update

Tested: rush install

Tested: bugserver-trigger build command

Tested: alpha package integrity compared with npm view

Tested: git diff --check
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants