The GitHub Actions job "Backport Approval Check" on texera.git/feat/form-view-switch-without-reload has failed. Run started by GitHub user Copilot (triggered by Copilot).
Head commit for run: 69472c774c7c11d73ec78e0748b5ad5710fd8707 / Yang Zhang <[email protected]> fix(frontend): audit what a view arriving on a live session has to be told, and tell it Review kept finding the same defect in different places: a view created by the switch subscribes to a stream that carries no current value, starts a field at its default, and waits for an event that does not follow a hand-over. Rather than keep finding them one at a time, every subscription in the components both views create (151 across the two views, the menu, the computing-unit picker, the editor, the mini-map, the result panel and the property panel) was checked against one question -- if this mounts after the state it shows exists, does it read that state? -- and every ngOnDestroy against another: does it undo what its mount created, and only what its mount created? The table is in the PR description. Most state already lives behind a BehaviorSubject, or on the shared JointJS model, and needed nothing. Six did not: - The zoom ratio lives in the root-provided wrapper while a new paper starts at scale 1; disagreeing, the first "zoom in" after a switch stepped from the wrapper's ratio and could shrink the canvas. The paper adopts the wrapper's ratio on mount. - The rendering context keeps a static reference to the attached paper; it is detached on destroy so a context exit cannot update a removed paper. A no-op once a newer paper has attached, the usual order. - The result panel re-rendered only on events, none of which follow a hand-over, so it came up empty beside an operator still shown selected. It renders once on init. - The property panel restored its saved placement through a document-wide `#right-container` lookup; both views mount it, and they overlap for a tick, so the placement could land on the departing view's. Own host now, as the editor and mini-map already do. - The menu resets the export flags on destroy, right on leaving the workspace and wrong on a hand-over where the results are kept; the arriving menu read `false` for results still there. It asks the service to recompute on mount. `resetFlags` also replaced the BehaviorSubject with a fresh one, orphaning subscribers; it emits now. - The editor reset the heat-map view on destroy so a re-entered workspace started with the overlay off. It is destroyed on every hand-over, after the arriving menu has restored the persisted overlay (#8552, which this rebases onto), so the reset switched the overlay off again on every switch. The reset moved to the two views' own teardown, beside the metrics it belongs with, where it runs only on a real departure. Deletion-checked, each turning exactly one named test red. Two of the new tests needed care to discriminate at all: jsdom's getElementById returns elements in the order their ids were registered, not tree order, so the decoy has to be in the document before the component is created; and the same change-detection pass that runs ngOnInit applies the template's width binding, so the restored placement is probed through `left`. Full frontend suite: 224 files, 6171 passed before the rebase; see the PR for the count after. AOT build, eslint and prettier clean. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY Report URL: https://github.com/apache/texera/actions/runs/35773980240 With regards, GitHub Actions via GitBox
