Skip to content

Release/1.17.1 - #11

Merged
Mnikley merged 4 commits into
mainfrom
release/1.17.1
Aug 12, 2026
Merged

Release/1.17.1#11
Mnikley merged 4 commits into
mainfrom
release/1.17.1

Conversation

@Mnikley

@Mnikley Mnikley commented Aug 12, 2026

Copy link
Copy Markdown
Member

1.17.1 — workspace switching fixes

Switching workspaces could land on an invisible graph: dragging (or even clicking) a node pinned sigma's normalization bbox and nothing released it, so workspaces with different coordinate ranges (grid vs circular templates) rendered off-screen. The pin is now scoped to the drag gesture, and every full render re-derives normalization from the current node extent.

Also in this release:

  • Bubble groups switch cleanly, hulls hide instantly when a switch starts and fade back in only after being refit at the settled positions, instead of flashing the incoming groups' colors on the outgoing shape and trailing the tween.
  • Rapid re-switching no longer hangs, a cancelled position tween never resolved its caller (bundled animateNodes skips the callback on cancel), stranding the older switch's cleanup and history reset.
  • Overlay can't get stuck, the try in changeLayout/addLayout/relayoutWorkspace now starts right after holdLoading(), so an early throw can't leak the hold and block every hideLoading() until reload.
  • Perf: layoutChanged is consumed after a successful render, previously the first Arrange forced full re-indexing renders for the rest of the session.
  • Workspace-name dialog validates inline instead of window.alert().

Mnikley added 4 commits August 12, 2026 16:15
…bles

Switching workspaces could land on an invisible graph. InteractionManager
pins sigma's normalization bbox on every node mousedown (drag stability) and
nothing but fitView ever released it, so the frozen bbox rendered any
workspace with a different coordinate range (grid [0, cols*100] vs circular
[-r, r]) off-screen or subpixel. The pin is now released where its lifetime
actually ends — on mouseup — and every full render() re-derives normalization
from the current node extent as a backstop.

Rapid re-switching could hang a switch forever: the bundled animateNodes
never invokes its completion callback when cancelled, so a tween cancelled by
a newer switch stranded the older changeLayout awaiting its promise (skipping
history.reset and its finally). The cancel handle now resolves explicitly,
and a cancelled run early-returns, handing nodeRef mirroring, the bubble fade
and the cancel handle to the newer transition.

Bubble hulls no longer trail the position tween or flash the incoming
groups' colors on the outgoing shape: changeLayout hides both bubble
canvases instantly before any incoming state (styles, visibility, group
sync) can repaint them, and the reveal refits deferred outlines
synchronously (BubbleSetLayer.refitNow) before easing back in — never
showing a hull the refit deferral left at stale positions. A switch
cancelled mid-tween leaves the reveal to its successor.

Hardening: the try in changeLayout/addLayout/relayoutWorkspace now starts
immediately after holdLoading(), so a throw in the formerly unprotected
window (e.g. #selectView naming a deleted workspace) can no longer leak the
hold and block every hideLoading() until reload.
handleLayoutChangeLoadingEvent raised cache.layoutChanged and nothing ever
reset it, so the first Arrange/Re-layout of a session forced the full
re-indexing render() branch onto every later style- or filter-only update.
decideToRenderOrDraw now clears the flag once a render succeeds; a failed
render keeps it up so the next call re-renders.
The empty-name check in the creation dialog called window.alert() — the last
native dialog in a codebase that uses Popup everywhere, and one that blocks
the renderer thread outright (an automation harness hangs on it with no
diagnostic). An empty submit now marks the input via the constraint
validation API (setCustomValidity + reportValidity), keeps the dialog open,
and clears the mark as soon as the user types.
Patch release: workspace-switch visibility/normalization fixes, bubble
transition choreography, cancelled-tween resolution, overlay-hold hardening,
inline workspace-name validation, and the layoutChanged render-branch fix.
@Mnikley
Mnikley merged commit a09298d into main Aug 12, 2026
2 checks passed
@Mnikley
Mnikley deleted the release/1.17.1 branch August 12, 2026 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant