Skip to content

v0.3.3

Choose a tag to compare

@F1LIP3 F1LIP3 released this 15 Jun 04:53
· 31 commits to master since this release

UX Overhaul — Dirty Tracking, Undo/Redo, Keyboard Shortcuts & More

New UX Features

  • Dirty-state tracking: Save button pulses when changes are unsaved; shows asterisk (\Save*)
  • Undo/Redo per preset (Ctrl+Z / Ctrl+Shift+Z, 30-deep history)
  • Keyboard shortcuts: \1/\2/\3\ for presets, \Ctrl+S\ save, \Ctrl+E\ export, \Ctrl+I\ import, ?\ help, \Esc\ close
  • MIDI device picker: Select your pedal from a dropdown when multiple MIDI devices detected
  • Disconnect detection: App detects when USB cable is unplugged and shows \Pedal disconnected!\
  • Loading skeleton: Pulsing placeholder UI while presets load after connect
  • Revert to saved: Red button appears when edits are unsaved — click to restore saved state
  • Factory reset: Reset current preset to sensible defaults
  • Snappier sliders: Debounce reduced from 200ms to 50ms

Visual & Mobile

  • Error boundary now uses dark theme (was hardcoded light colors)
  • IR Lab section open/close state remembered between sessions
  • Fixed undefined CSS variables in IR section
  • Mobile layout: larger touch targets, better wrapping on small screens
  • Removed dead Knob.tsx component (168 lines of unused code)

Fixes

  • Fixed \useMemo is not defined\ ReferenceError (missing import)
  • Fixed 3 TDZ (temporal dead zone) ReferenceErrors — reordered callbacks so handlers are defined before their deps arrays are evaluated

Architecture Refactor

  • Extracted constants, helpers, and 9 components from monolithic App.tsx:
    • \constants.ts, \helpers.ts, \ ypes.ts\
    • \WelcomeScreen, \HelpModal, \DebugPanel, \StatusBar\
    • \AppHeader, \PresetBar, \Toolbar, \IRSection, \SkeletonLoader\
  • App.tsx reduced from 1027 → 701 lines (32% reduction)
  • Removed unused \midi, \serialport, @types/midi\ npm dependencies
  • 0 npm vulnerabilities