orbit/js/ui
Brian Fertig 75767dc5a5 Add ship state machine and let movement break the mining sequence
- Introduce `Ship.state` ('normal' | 'mining') with `setState()` and an
  `onStateChange` callback so the scene can react to state exits.
- Any player-initiated movement (world click or compass autopilot) now
  drops the ship back to 'normal', which ends the mining sequence via the
  scene's handler; Mining.update() enforces the gate as a belt-and-braces.
- Rename `Mining.isLocked` to `isActive` and update GameScene click logic:
  clicks no longer hold during extension — they move the ship and abort the
  arm's reach.
- Tighten the popup-button swallow window from 300 ms to 20 ms and add a
  `containsScreen()` hit-test so only the exact button press is consumed,
  not subsequent deliberate clicks on the panel area.
- Expand the headless mining test to cover the new movement-abort contract:
  world click mid-extension breaks the arm, autopilot retracts the beam,
  and ship state transitions are asserted at every stage.
2026-09-04 18:06:33 -06:00
..
ActionBar.js
…
ConfirmOverlay.js
…
CyberShape.js
…
DiscoveryCompass.js
…
GlitchText.js
…
MenuButton.js
…
MenuSubBar.js
…
MiningPopup.js Add ship state machine and let movement break the mining sequence 2026-09-04 18:06:33 -06:00
SavePanel.js Fix SavePanel button overflow, header decode freeze, and card lock state 2026-09-04 14:48:36 -06:00
SlotCard.js
…
Toast.js
…