You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A multi-selection was previously invisible (React Flow's own .selected
class ships unstyled) and had no action surface beyond a right-click.
Adds a 2px accent outline + soft ring to every Atlas node type keyed
off .react-flow__node.selected, and a floating selection tray
(AtlasSelectionTray) that replaces the creation tray while 2+ cards/
notes are selected -- count label, Group into new area (2+ cards),
Delete, and a bare-G / Escape keyboard door mirroring the tray's own
buttons. useAtlasSelection now also exposes selectedCards/
selectedNotes as reactive state alongside its existing ref-only menu
snapshot.
The tray/Escape-clear threshold is 2+ selected, not 1+: React Flow
marks a node .selected via its own built-in Escape/Enter/Space
keyboard accessibility handling independent of any deliberate
multi-select gesture, so a 1+ threshold fired on every ordinary
flip-click and broke the existing flip/unflip behavior -- verified via
two previously-passing e2e tests failing, fixed by aligning with the
same >=2 threshold the multi-select context menu's own gate already
uses.
The keyboard listener (useAtlasSelectionTray) registers exactly once
and reads current values through a ref rather than resubscribing per
render: the earlier per-dependency-change resubscription opened a
real window where a fast keypress landed between an unsubscribe and
the next resubscribe and was silently dropped -- reproduced live via
a flaking Escape-unflip assertion, fixed by the stable-listener/
latest-ref pattern this codebase already uses elsewhere for the same
class of problem.
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments