Selection & edit UX hardening: predictable drag, deselect, isolate, and multi-select behavior #2

Closed
opened 2026-02-16 21:46:53 -05:00 by Rbanh · 2 comments
Owner

Problem

Selection and movement behavior can still feel inconsistent in dense canvases, especially with mixed pin/net/component hits.

Goal

Make all selection/edit interactions robust and predictable at production quality.

Scope

  • Normalize hit-testing precedence and click-off deselect behavior.
  • Ensure isolate modes always clear/reset correctly on context changes.
  • Stabilize drag preview and placement commit for multi-select moves.
  • Add clear visual selected states for component, pin, and net.
  • Add undo/redo stack for edit actions (minimum 50 operations).

Acceptance Criteria

  • No accidental sticky selection states.
  • Multi-select drag and rotate are deterministic.
  • Undo/redo restores model + selection state correctly.
  • Interaction test checklist passes across mouse/trackpad flows.
## Problem Selection and movement behavior can still feel inconsistent in dense canvases, especially with mixed pin/net/component hits. ## Goal Make all selection/edit interactions robust and predictable at production quality. ## Scope - Normalize hit-testing precedence and click-off deselect behavior. - Ensure isolate modes always clear/reset correctly on context changes. - Stabilize drag preview and placement commit for multi-select moves. - Add clear visual selected states for component, pin, and net. - Add undo/redo stack for edit actions (minimum 50 operations). ## Acceptance Criteria - No accidental sticky selection states. - Multi-select drag and rotate are deterministic. - Undo/redo restores model + selection state correctly. - Interaction test checklist passes across mouse/trackpad flows.
Rbanh added this to the Phase 2 - Production Polish milestone 2026-02-16 21:47:20 -05:00
Author
Owner

Implemented first hardening slice for Issue #2 in commit 85e5a34.

Shipped

  • Added Undo/Redo controls in top toolbar with keyboard shortcuts:
    • Undo: Ctrl/Cmd+Z
    • Redo: Ctrl/Cmd+Shift+Z and Ctrl/Cmd+Y
  • Added bounded history stack for model + selection/isolation context.
  • Wired history capture across mutating editor actions (component/pin/net/symbol edits, connect/disconnect, node add/remove, drag-move, rotate, apply/import/new/load sample, auto layout/tidy).
  • Improved interaction consistency:
    • Net context clears component isolation
    • Component/pin context clears net isolation
    • Escape clears selection/isolation (and still closes schema modal first)
  • Hardened hit-testing precedence so pin/net interactions do not accidentally trigger component drag pointerdown.
  • Added disabled styling for inactive Undo/Redo buttons.

Validation

  • JS syntax checks pass.
  • Existing test suite passes.

Remaining for Issue #2

  • Add explicit visible state polish for selected net/pin beyond current highlighting.
  • Add history action labels in UI (e.g., undo tooltip with action name).
  • Extend interaction regression coverage with frontend e2e tests.
Implemented first hardening slice for Issue #2 in commit `85e5a34`. ### Shipped - Added Undo/Redo controls in top toolbar with keyboard shortcuts: - Undo: `Ctrl/Cmd+Z` - Redo: `Ctrl/Cmd+Shift+Z` and `Ctrl/Cmd+Y` - Added bounded history stack for model + selection/isolation context. - Wired history capture across mutating editor actions (component/pin/net/symbol edits, connect/disconnect, node add/remove, drag-move, rotate, apply/import/new/load sample, auto layout/tidy). - Improved interaction consistency: - Net context clears component isolation - Component/pin context clears net isolation - Escape clears selection/isolation (and still closes schema modal first) - Hardened hit-testing precedence so pin/net interactions do not accidentally trigger component drag pointerdown. - Added disabled styling for inactive Undo/Redo buttons. ### Validation - JS syntax checks pass. - Existing test suite passes. ### Remaining for Issue #2 - Add explicit visible state polish for selected net/pin beyond current highlighting. - Add history action labels in UI (e.g., undo tooltip with action name). - Extend interaction regression coverage with frontend e2e tests.
Author
Owner

Final closure summary:

  • Selection/movement behavior hardened across click-off deselect, isolate resets, and multi-select flows.
  • Undo/redo stack implemented and integrated across editing actions.
  • Visual selected-state/highlight behavior stabilized.

Delivered across earlier commits including 85e5a34 and subsequent UX fixes.

Final closure summary: - Selection/movement behavior hardened across click-off deselect, isolate resets, and multi-select flows. - Undo/redo stack implemented and integrated across editing actions. - Visual selected-state/highlight behavior stabilized. Delivered across earlier commits including `85e5a34` and subsequent UX fixes.
Rbanh closed this issue 2026-02-18 21:03:04 -05:00
Sign in to join this conversation.
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Rbanh/schemeta#2
No description provided.