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

Reply via email to