The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
- Fixed confusing function / operator precedence
- Improved scroll-to-cursor behavior in iOS source editor
- Bumped Euclid to version 0.6.13 (includes fix for cracking/holes issue)
- Added What's New in ShapeScript screen to iOS Viewer
- Improved static type inference for import statements
- Fixed type error for constant transform overrides
- Removed OpenGL support for High Sierra
- Fixed range precision issue
- Added Linux CLI support
- Added `arc` command
- Added vector algebra operators
- Setting unequal width/height no longer distorts corner radius for `roundrect` command
- Added `sign`, `dot`, `cross`, `length` and `normalize` functions
- Added implicit casting between vector and size values
- Select Shape menu is now disabled when empty
- Improved argument error messages
- Fixed bug where modulo operator sometimes returned negative values
- Fixed bug when mixing points and subpaths in a `path` command
- Fixed retain cycle in iOS file dialog
- Fixed potential crash in `selectCamera()` function
- Increased code sharing between Mac and iOS Viewer implementations
- Bumped Euclid to version 0.6.12
- The position and transform of mesh and path values can now be set as if they were a block
- Setting name on a block that returns a path no longer makes the result unusable in a builder
- Constants and property symbols are no longer called "function" in error messages
- Removed unhelpful "did you mean" suggestions when a valid symbol is used in wrong context
- Improved error description for numeric list type
- Fixed various bugs in the iOS source editor
- Bumped SVGPath to version 1.1.3
- Fixed performance regression in `GeometryType.bounds` when using lathe shapes
- Fixed line number display in iOS source editor
- Bumped Euclid to version 0.6.11
- The `bounds` and `polygons` members now correctly take object transform into account
- ShapeScript Viewer for iPad now supports multiple viewer/editor windows
- Fixed some bugs and improved editing experience for source editor on iOS
- Fixed bug where iOS editor would sometimes close spontaneously while editing
- Added `shapescript:` URL scheme and improved URL handling
- Bumped Euclid to version 0.6.10
- iOS Viewer now supports editing `.shape` files directly inside the app
- Added `Edit > Select Shape` and `Clear Selection` menus in macOS viewer
- Added selection hotkeys and VoiceOver support for macOS viewer
- Fixed selection being cleared whenever geometry is refreshed
- Fixed dynamic dark mode updates on iOS viewer
- Fixed iOS split view bounds crash
- Fixed bug where camera hotkeys failed after reload
- Fixed error overlay translucency
- Fixed various member type bugs
- Improved info panel display
- Fixed twisted extrusion offset
- Fixed roundrect detail level (previously 4x higher than intended)
- Fixed incorrect output when intersecting groups of meshes
- Empty scenes are no longer hidden if they contain debug geometry
- Scene now conforms to Equatable protocol
- Fixed misleading error message for excess color arguments
- Fixed spurious forward declaration error for options that shadow global define
- Added automatic casting of hex strings to colors (useful for JSON data)
- Made polygon members available on all geometries, not just manually-created meshes
- Excluded source location from Geometry equality comparisons
- Fixed vector member access on tuples containing string elements
- Fixed vector member access on nested numeric tuples
- Fixed color member access on tuples and strings
- Fixed polygon member lookup on meshes
- Fixed handling of blocks with optional children (e.g. polygon)
- Improved symbol lookup performance
- Bumped Euclid to version 0.6.8
- Added twist option to extrude command
- Fixed inconsistent view menu options when switching between open documents
- Bumped Euclid to version 0.6.7
- Added hull command for creating convex hulls from points, paths or other meshes
- Added mesh command for manually creating meshes from individual polygons
- Added axisAligned property for controlling extrusion along paths
- Added support for importing plain text files as a string and JSON files as a tuple
- Added modulo operator for calculating remainder of division
- Significantly overhauled type system to support lists, unions and objects
- Improved static analysis, allowing type errors to be caught earlier
- Improved handling of background property scope
- The min and max functions are now variadic (accept any number of arguments)
- Added split(), join() and trim() functions for working with strings
- Added automatic conversion of strings to numbers or boolean values where applicable
- Added string.lines, .words and .characters members
- Added tuple.count, .last, .allButFirst and .allButLast members
- Fixed member lookup on numeric literals
- Fixed bug where material of imported shapes could not be overridden
- Background and texture can now be cleared by setting them to an empty string
- Logging geometry values to console now produces more useful output
- Added proper logging for bounds and point values
- Added fileTimedOut and circularImport errors
- Refactored and improved error handling
- Renamed ImportError to ProgramError
- Raised minimum Euclid version to 0.6.6
- Added Spirals example