chore(vtable): upgrade VRender to 1.1.0-alpha.26#5164
Open
xuefei1313 wants to merge 22 commits into
Open
Conversation
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
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
VRender 1.1 deep-clones graphic base attributes for static state snapshots. PivotChart chart graphics keep canvas and VChart runtime refs in attributes. Size updates could traverse canvas.__vtable__ cycles before first render. Constraint: Chart graphic still reads runtime refs from attributes Constraint: Do not deep import or patch VRender internals Rejected: Disable PivotChart state flow | hides the compatibility problem Confidence: high Scope-risk: narrow Tested: rushx compile Tested: rushx test --runInBand __tests__/chart-graphic.test.ts Tested: rushx test --runInBand __tests__/pivotChart.test.ts Tested: bugserver case construct and brush smoke with VChart 2.1.0-alpha.18 CDN Not-tested: Full bugserver photo CI
ListTable image icons kept the legacy shape flag. VRender 1.1 clips image graphics through native cornerRadius in this runtime path. Map circle icons to cornerRadius during icon attribute creation. Constraint: shape remains a VTable option and compatibility attribute. Constraint: VRender 1.1 image renderer consumes cornerRadius for image clipping. Rejected: Renderer fallback | duplicates VRender native clipping behavior. Confidence: high Scope-risk: narrow Directive: Keep icon shape compatibility at the attribute mapping boundary. Tested: focused text-icon-layout Jest test Tested: cd packages/vtable && rushx compile Tested: browser smoke on localhost:3003; corner pixel clipped to background
VRender alpha.28 restores explicit renderer contribution providers. VTable keeps ImageRenderContribution and TextRenderContribution registration. Remove the temporary shape to cornerRadius mapping. Circle icons now exercise the VTable image contribution path again. Constraint: Renderer contributions stay on their render tokens. Rejected: Keep cornerRadius fallback | masks image contribution coverage. Confidence: high Scope-risk: moderate Directive: Do not move graphic renderer contributions to app registry. Tested: rush update --full Tested: rush check --verbose Tested: cd packages/vtable && rushx compile Tested: focused app renderer, icon layout, PivotChart, Chart graphic tests Tested: browser smoke on forced Vite server
Gantt called legacy vglobal.setEnv before createStageFromVRenderApp. With VRender 1.1, ScrollBar still binds native events through legacy vglobal. That early setEnv could leave vglobal with env but no active envContribution. Gantt now matches VTable: app creation owns environment activation. The regression test covers the bugserver init path that hit ScrollBar.bindEvents. Constraint: VRender alpha 28 keeps ScrollBar listeners on legacy vglobal. Rejected: Add missing-env guards | hides invalid bootstrap order. Confidence: high Scope-risk: narrow Directive: Do not call vglobal.setEnv before createStageFromVRenderApp here. Tested: cd packages/vtable-gantt && rushx test --runInBand Tested: cd packages/vtable-gantt && rushx compile Tested: cd packages/vtable-gantt && rushx build
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
1.1.0-alpha.26without changing VTable package versions.developand preserve VRender alpha.26 contracts for app ownership, state animation, and strict scenegraph insertion.Validation
rush updatepackages/vtable rushx compilepackages/vtable rushx buildpackages/vtable rushx testpackages/vtable-plugins rushx compilepackages/vtable-plugins rushx test --runInBandrush test --only tag:packageeslinton changed files with--quietgit diff --checkNotes
rush test --only tag:packagepassed with warnings from existingMaxListenersExceededWarningandts-jestsourceMap: falseconfiguration.http://localhost:3003/for manual render testing.packages/vtable rushx test-nodejswas blocked by a missing localcanvasmodule in this environment.