Motif 1.1.0 Released

A major update bringing full mobile and tablet support, comprehensive test coverage, and improved code quality with JSDoc annotations throughout.

Added

  • Mobile and tablet responsive design for all screen sizes
  • Touch support for grid resize handles with larger touch targets (20px)
  • Visual feedback when resizing grid on touch devices
  • Full-screen overlay panels on mobile with close buttons
  • Optimized canvas sizing for mobile portrait and landscape modes
  • Larger touch targets throughout mobile UI (44px minimum)
  • Comprehensive JSDoc type annotations across entire codebase for better IDE support and AI assistance
  • History size limit (50 states max) to prevent unbounded memory growth
  • Browser feature detection with user-friendly error messages (Canvas API, localStorage, FileReader)
  • Content Security Policy on all HTML pages to improve security posture
  • Self-hosted fonts for offline capability and privacy (Google Fonts downloaded locally)
  • Comprehensive unit test suite (140 tests across storage, grid, export, validation, feature detection, history)
  • Code coverage reporting configuration
  • Dependabot configuration for automated dependency updates
  • Inline documentation for complex algorithms and edge cases
  • Application state structure documentation in CONTRIBUTING.md

Changed

  • Canvas headings hidden in landscape mode to save vertical space
  • Navbar layout optimized for mobile with reduced spacing
  • Side panels now overlay content on mobile instead of pushing it
  • Improved canvas space utilization on all mobile devices
  • Refactored main.js into focused UI modules (palette.js, panels.js, keyboard.js, interactions.js)
  • Extracted magic numbers to CONFIG constants with documentation
  • All configuration constants now documented in config.js
  • Browser no longer loads external Google Fonts (CSP updated accordingly)

Fixed

  • Canvas size now remains stable when browser address bar appears/disappears on mobile
  • Grid resize handles now work properly with touch input