Skip to content

Latest commit

 

History

History
executable file
·
706 lines (562 loc) · 35.6 KB

CHANGELOG.md

File metadata and controls

executable file
·
706 lines (562 loc) · 35.6 KB

Change Log

1.8.6 (2024-07-24)

  • Bumped Euclid to version 0.7.8
  • Bumped SVGPath to version 1.1.5

1.8.5 (2024-04-24)

  • The calculation of exactBounds is now cancellable
  • Fixed issue where .bounds member didn't work on text path output
  • Partial scene progress is now rendered after an error to facilitate debugging
  • Scalar SCNMaterial properties like roughness are now imported correctly
  • Mouse or tap selection now works through invisible objects
  • Optional function arguments can now be omitted
  • Added fileURL property to Program

1.8.4 (2024-02-18)

  • Added in operator for testing if a value lies within a tuple or range
  • Negative subscript indices can now be used to access elements at the end of a list
  • Improved error messages for member access and subscripting
  • Fixed bug with subscripting parenthesized values
  • Fixed a bug with casting single-element tuples
  • Made SVGPath functions public
  • Bumped Euclid to version 0.7.7

1.8.3 (2024-02-03)

  • Fixed file access bug for iCloud hosted files
  • Fixed issue where initial seed for random sequence wasn't truncated to correct range
  • Updated iOS TextView with some bug fixes
  • Bumped Euclid to version 0.7.6
  • Bumped LRUCache to version 1.0.7

1.8.2 (2024-01-20)

  • Fixed alpha blending bugs in rendered images
  • Uniform vertex colors are now converted to a material
  • Improved error messaging for file access errors
  • Increased stack limit to prevent overflow for trivial recursion
  • Fixed double application of local transform to imported shapes
  • Fixed double application of local transform in functions
  • Bumped Euclid to version 0.7.4
  • Bumped LRUCache to version 1.0.5

1.8.1 (2023-12-31)

  • Improved color replacement for imported shapes
  • STL import now supports facet colors
  • Linux CLI now supports binary STL export
  • Improved reporting of system errors
  • Added camera.antialiased property
  • Bumped Euclid to version 0.7.3
  • Bumped SVGPath to version 1.1.4
  • Added visionOS support

1.8.0 (2023-11-25)

  • Added switch/case statements
  • Added subscripting support for objects and tuples
  • Added object constructor command
  • Objects can now be cast to/from memberwise types
  • Added light.shadow property
  • The opacity property can now be set to a texture
  • Textures now use nearest-neighbor filtering for upscaling instead of linear
  • Added normals command for setting surface normals with a texture
  • Added roughness and metallicity properties for physically based rendering (PBR)
  • Added material command for setting all material properties at once
  • Combined Material.color and texture properties into single property internally
  • The Material.isOpaque property is now correctly computed when using a texture
  • Added text.string, font, color and linespacing members
  • You can now use import statements in expressions
  • Object values are now correctly unwrapped
  • Removed some deprecated methods

1.7.1 (2023-10-23)

  • Fixed spotlight debug shape orientation
  • Added Geometry.withoutLights() method
  • Added Geometry.withoutGroupTransform() method
  • Deprecated Geometry.with(name:) method
  • Added point.isCurved and polygon.center member properties
  • Added object type logging and made logging less error-prone
  • Added documentation for lights limit introduced in 1.7.0

1.7.0 (2023-10-14)

  • Fixed ambiguity when calling functions with parenthesized arguments
  • Added error message when using more than 8 lights in a scene
  • Bumped Euclid to version 0.7.1

1.6.14 (2023-09-23)

  • Bumped Euclid to version 0.6.18 (fixes crash when building with Xcode 15)

1.6.13 (2023-07-30)

  • Fixed "Show Wireframe" menu item not updating correctly on iOS
  • Added error hint for misspelled else keyword
  • Added Value.errorDescription for clearer error messages
  • Fixed out of bounds crash in iOS source editor
  • Fixed some type-system edge cases for optionals, unions and lists
  • Added checked angular types to help prevent mixed angle errors
  • Added regression tests for example shape files
  • Bumped Euclid to version 0.6.15

1.6.12 (2023-07-08)

  • Fixed bug where structured data was flattened when returned from a block or function
  • Source editor on iOS no longer closes when shape file is reloaded
  • Disabled double space period shortcut in iOS source editor
  • Fixed orthographic checkbox not updating on iOS
  • Added Icosahedron example project
  • Improved camera control docs

1.6.11 (2023-06-21)

  • Fixed bug where block options could clash with global functions of the same name

1.6.10 (2023-06-12)

  • Removed Reddit community links
  • Fixed precedence issue with point/curve commands (introduced in 1.6.9)
  • Fixed broken importing of external model file formats (introduced in 1.6.8)
  • Block options can now be set conditionally within if blocks
  • Overrides to global constants and functions are now usable inside block invocations
  • Fixed bug where local defines in a block invocation were mistaken for options
  • The point.color member now returns an empty tuple instead of an error if unset
  • Fixed occasional blank screen glitch when first opening a file
  • Fixed iOS camera menu not updating after camera is moved
  • Bumped Euclid to version 0.6.14

1.6.9 (2023-04-21)

  • 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

1.6.8 (2023-04-16)

  • 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

1.6.7 (2023-04-04)

  • 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

1.6.6 (2023-03-25)

  • 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

1.6.5 (2023-03-02)

  • 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

1.6.4 (2023-02-28)

  • 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

1.6.3 (2023-01-31)

  • 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

1.6.2 (2023-01-16)

  • 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

1.6.1 (2023-01-02)

  • Added twist option to extrude command
  • Fixed inconsistent View menu options when switching between open documents
  • Bumped Euclid to version 0.6.7

1.6.0 (2022-12-27)

  • 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

1.5.14 (2022-12-18)

  • Added support for C-style block comments using /* ... */ syntax
  • Fixed bug where source file could incorrectly be inferred as UTF-7, causing parsing errors
  • Fixed issue where error messages would sometimes suggest the same identifier you already used
  • Improved script execution performance by making source location lookup lazy
  • Bumped Euclid to version 0.6.6

1.5.13 (2022-12-08)

  • Fixed crash when importing external .shape files
  • When error occurs in imported file, Cmd-E now opens that file instead of the main file
  • Bumped Euclid to version 0.6.5

1.5.12 (2022-11-21)

  • Bumped Euclid to version 0.6.4 (includes fixes for single-point path crash and path extrusions)
  • Fixed parsing ambiguity in tuple expressions where identifier is followed by opening paren
  • Improved bounds accuracy for circle-based shapes

1.5.11 (2022-11-06)

  • Fixed source code view on iOS
  • Fixed loading of external iCloud assets when file has not been downloaded
  • ShapeScript now monitors changes to external textures, fonts and imports on iOS
  • Original topology for imported models is now preserved, instead of being triangulated
  • Improved error messaging for file imports
  • Bumped Euclid to version 0.6.2

1.5.10 (2022-10-29)

  • Improved documentation for strings and trigonometry functions
  • Fixed empty bounds returned for lathe, fill, extrude and loft shapes
  • Fixed runtime warning about postscript font names
  • Fixed range bug in error formatting logic
  • Fixed inconsistent handling of functions that return tuples
  • Fixed inconsistent member lookup handling
  • Bumped Euclid to version 0.6.0
  • Fixed Linux build warnings

1.5.9 (2022-10-06)

  • Fixed getting started link in Welcome modal
  • Removed bad suggestions from editors list
  • Added iOS target for ShapeScript Viewer

1.5.8 (2022-10-03)

  • Added shared SCNGeometry cache, significantly improving performance for scenes with repeated objects
  • Significantly reduced time to calculate mesh stats (as displayed in object info window)
  • Optimized source line lookup that affected script execution performance

1.5.7 (2022-09-26)

  • Fixed bug where a define inside a block couldn't refer to option value
  • Fixed bug when parsing expressions ending in a not identifier
  • Fixed bug where view unexpectedly jumped to custom camera after reload
  • Bumped Euclid to version 0.5.30
  • Bumped LRUCache to version 1.0.3
  • Bumped SVGPath to version 1.1.1
  • Added iOS help pages

1.5.6 (2022-09-06)

  • Added ability to copy the current camera configuration for easy creation of custom cameras
  • Improved logic for when camera position is reset after document update or window resize
  • Fixed bug where custom cameras did not correctly inherit the document background
  • Fixed bug where scale was doubled for custom orthographic cameras
  • Fixed live updating of document background when switching between light and dark mode
  • Fixed race condition in view rendering sometimes resulting in a blank scene
  • Fixed member suggestions for empty tuple
  • Renamed Geometry(scnNode:) initializer for consistency
  • Deprecated Geometry.cameras accessor
  • Bumped Euclid to version 0.5.29

1.5.5 (2022-08-11)

  • Significantly improved performance for bulk fill/extrude operations (e.g. text)
  • Fixed camera position continuously being reset in ShapeScript Viewer while loading
  • Added indicator to Camera menu when camera has been moved
  • Bumped Euclid to version 0.5.28

1.5.4 (2022-07-25)

  • Fixed setting font inside a text command
  • Improved error messages for missing block arguments
  • Multiple arguments passed to text command are now treated as single coalesced string
  • Extruding along a path now more reliably produces watertight output
  • Fixed parsing of tuple statements starting with constant
  • Fixed parsing of a prefix minus immediately followed by decimal point
  • Increased detail multiplier for svgpath command to match path
  • Fixed svgpath crash when missing M command after Z
  • Fixed camera clipping issue when resizing objects
  • Bumped Euclid to version 0.5.26

1.5.3 (2022-07-03)

  • The loft command now supports joining shapes with unequal numbers of sides or points
  • The fill, lathe and extrude commands now more reliably produce watertight output
  • Fixed incorrect polygon/triangle counts in model info
  • Fixed line numbers in selected object info
  • Bumped Euclid to version 0.5.25
  • Fixed some flaky tests

1.5.2 (2022-05-28)

  • Fixed bug where path lines were drawn too thin for large models
  • Improved error messaging for invalid use of option
  • Fixed suggestions for misspelled commands
  • Bumped Euclid to version 0.5.21

1.5.1 (2022-05-07)

  • Add implicit detail/smoothing, color/texture, position/orientation/size and font options to custom blocks
  • Logical and/or expressions now short circuit (don't evaluate their second parameter unless needed)
  • Added support for creating MaterialProperty from SCNMaterials using NS/UIImage
  • Fixed setting camera position on locked documents (such as the Example projects)
  • Added slightly stronger type safety when calling commands
  • Fixed axes contrast when using per-camera backgrounds
  • Fixed font inheritance for user-defined blocks
  • Added custom fonts to model info display
  • Added USDZ to list of supported export types
  • Improved iOS compatibility

1.5.0 (2022-04-29)

  • Added support for custom light sources using the light command
  • Added user-defined functions/commands (previously only blocks could be defined)
  • The width and/or height for exported images can now be set on a per-camera basis
  • Added polygon command for more easily creating regular polygon paths
  • The scene background can now be set individually for each camera
  • Using position, orientation and size inside a path now works again (broken since 1.4.4)
  • Using rnd command in option default expressions no longer has a knock-on effect on the sequence
  • Options can now reference local constants in their default values
  • Material brightness logic used in Viewer app is now part of the ShapeScript core
  • Using wrapwidth or linespacing text commands inside an svgpath block now raises an error
  • Fixed blank screen when scene contains empty camera node
  • Removed StatementType.block case in favor of expression form
  • Fixed some bugs in path generation relating to point colors
  • The OSColor typealias is now private
  • Added SVGPath dependency

1.4.7 (2022-04-14)

  • Camera is no longer reset on every reload
  • Fixed camera snapback if moved during initial model load
  • Added smoothing command for controlling surface normal generation
  • Disallowed used of detail and font commands in scopes where they have no effect
  • The svgpath command now works on Linux
  • Bumped Euclid to version 0.5.20

1.4.6 (2022-04-08)

  • Fixed svgpath command (broken in 1.4.5)
  • Fixed bug where axes were rendered in the wrong color
  • Watertight status is now displayed in object info panel
  • The roundrect command now works on Linux
  • Bumped LRUCache to version 1.0.3
  • Bumped Euclid to version 0.5.18

1.4.5 (2022-03-07)

  • Added support for setting per-vertex colors in a path
  • Font, text color and linespacing can now be specified per-line within a text block
  • Fixed underestimated bounds calculation for extrusion along a path
  • Made logic for child count calculation more consistent
  • Bumped Euclid to version 0.5.17

1.4.4 (2022-01-21)

  • Fixed infinite recursion crash when a shape file tries to import itself
  • Improved error message when imported model file is not readable
  • Fixed assertion failure when evaluating imported block due to source confusion
  • Added stricter symbol checking in stdlib so, e.g. name can't be used inside a path
  • Fixed bug in viewer where examples always open in orthographic mode
  • Imported gifs are now counted as textures rather than models in info panel
  • Model type is now displayed correctly in info panel
  • Fixed some iOS compatibility issues

1.4.3 (2021-12-25)

  • ShapeScript will now attempt to ensure generated meshes are watertight by default
  • Fixed unintended behavior change with blocks returning multiple shapes (introduced in 1.3.7)
  • Fixed precondition failure when calling a block from inside a path command
  • Camera nodes are no longer included in object count in model info
  • Handle repeated parameter lists without command tokens in svgpath
  • Added additional svgpath error handling
  • Bumped Euclid to version 0.5.15

1.4.2 (2021-12-10)

  • The svgpath command now supports arc instructions ('A' and 'a')
  • Fixed bug in svgpath affecting absolute horizontal ('H') and vertical ('V') lines
  • Save panel in viewer now adds .shape extension to file name if not present
  • Made online documentation link logic more robust

1.4.1 (2021-11-22)

  • Fixed bug where along property was ignored in extrude command
  • Fixed wireframe rendering mode in viewer

1.4.0 (2021-11-03)

  • Added user-defined cameras
  • Added boolean constants and operators
  • Added comparison operators (greater than, equals, etc)
  • Added if/else statements
  • Added assert command
  • Improved suggestions for mistyped operators
  • Replaced range expression with separate to and step operators
  • Failure to load an external model now displays an error instead of failing silently
  • Added distinct error type for invalid text escape sequences
  • Simplified identifier expression representation
  • Converted option keyword to contextual keyword
  • Added Geometry.worldTransform property

1.3.10 (2021-11-01)

  • DAE files containing triangle strips or non-triangular polygons are now loaded correctly
  • Fixed empty Geometry names not being set to nil
  • Fixed broken footer links in help pages
  • Bumped Euclid to version 0.5.14

1.3.9 (2021-10-22)

  • Added multiple camera options
  • Added orthographic view option
  • Reorganized camera menu and keyboard shortcuts
  • View settings are now saved per-document instead of globally
  • Fixed bug where camera would reset when toggling wireframe mode
  • Documents now open in tabs automatically when tab bar is shown

1.3.8 (2021-10-10)

  • Added svgpath command for creating paths using SVG-compatible syntax
  • Added bounds member property for calculating dimensions of complex shapes
  • Added wrapwidth and linespacing options for text
  • Improved debug command behavior for children of CSG containers
  • Fixed bug when setting background color with a single number (e.g. 0 for black)
  • Fixed bug where only first expression argument was highlighted in a type-mismatch error

1.3.7 (2021-09-26)

  • Added debug command for highlighting invisible geometry
  • Custom blocks can now return any value type, not just meshes or paths
  • Infix expressions are now handled correctly when used in a statement position
  • Improved type mismatch error messages for block parameters
  • String values are no longer nullable and empty strings are handled more correctly
  • Nested command calls without parentheses are now handled correctly
  • Improved type reporting for single-value tuples in error messages
  • Updated print behavior to better match text interpolation

1.3.6 (2021-09-21)

  • Added text interpolation, allowing text strings to be constructed dynamically
  • Import and textures file paths can now be constructed dynamically
  • Alpha component of colors can now be overridden with a convenient syntax
  • Removed confusing references to "string" and "identifier" from error messages
  • Added ability to load text fonts from a file name or path
  • Fixed bug where font getter returned texture instead
  • Improved help documentation

1.3.5 (2021-09-19)

  • Numbers can now be used in text blocks
  • Fixed bug with times/divide operator associativity
  • Fixed default zoom level in viewer when axes are shown
  • Fixed bug in scene bounds calculation when children have a transform applied
  • Improved error message for missing files specified by full path
  • Limited maximum lineWidth when rendering paths

1.3.4 (2021-09-17)

  • The position/size/orientation options can now be used inside text blocks
  • Fixed parsing error when using inline expressions in loop range
  • Unsupported string escape sequences are now treated as an error
  • Command parameters are now included in assertion failure error highlighting
  • Fixed bug with sequential escape sequences in text

1.3.3 (2021-09-14)

  • Fixed crash when font is set to an empty string
  • Fixed incorrect suggestion of option for typos in contexts where it isn't available
  • Print logging in a long/infinite loop no longer freezes UI
  • Help index is now generated automatically
  • Improved help for colors and text

1.3.2 (2021-09-13)

  • Added stack overflow detection, preventing crashes due to infinite recursion
  • Added support for underscores in identifiers
  • Empty and single-element tuples are now permitted (useful in loops and data structures)
  • Looping over vector, size and color values is no longer permitted (only tuples and ranges)
  • Geometry Hashable implementation is now based on value rather than reference
  • Bumped Euclid to 0.5.12, which fixes the getters for Rotation.pitch/yaw/roll
  • Shape position/orientation/size are now read/write properties instead of setters
  • Wireframes are now rendered with polygons instead of lines on x86, for better quality
  • Added open/create document prompt when opening app
  • Improved Welcome view

1.3.1 (2021-09-07)

  • Disabled axes by default and added instructions for enabling to help
  • Added ordinal members for accessing arbitrary tuple elements
  • Fixed rendering bug when using negative scale values
  • Fixed bug where functions were able to access local variables of the caller
  • Fixed dot operator (member lookup) chaining
  • Added documentation for tuples and structured data access
  • Bumped Euclid to 0.5.11, which includes several performance optimizations
  • Fixed issue where console would not clear correctly when reloading
  • Fixed hint message when missing closing brace
  • Added colour and grey as aliases for color and gray
  • Made stroke line width proportional to the scene size
  • Improved logic for default camera zoom level
  • Increase antialiasing quality in viewer
  • Updated screenshots and fixed bugs in help examples

1.3.0 (2021-08-31)

  • Added new standalone range expression with optional step value
  • For loops can now be used with either range or tuple/vector values
  • Added support for hex color literals
  • Added standard color names as constants
  • Inherited standard library symbols no longer override user-defined constants
  • All ShapeScript value types now conform to AnyHashable
  • Removed CustomStringConvertible conformance from GeometryType as it made debugging harder
  • Renamed StatementType.node to StatementType.block, since the term was confusing
  • Bumped Euclid to 0.5.10, which includes several bug fixes and features
  • Fixed crash when trying to access vector or color members from a non-numeric tuple
  • Fixed crash when trying to color members from a tuple with more than 4 elements
  • Accessing vector members on a tuple with more than 3 elements now raises an error
  • Made unchecked Color initializer private
  • Removed SceneViewController.snapshot() method
  • Added option to show axes in ShapeScript Viewer
  • Wireframe view option in viewer is now rendered using lines instead of SceneKit Debug option
  • Made wireframe view option persistent across app launches

1.2.4 (2021-08-25)

  • Fixed a crash when logging large integer values
  • Fixed bug where negative numbers would be logged as zero when using the print command
  • Improved formatting of logged numeric values generally

1.2.3 (2021-08-24)

  • Enabled parenthesized expressions to span multiple lines
  • Improved error message when assigning multiple values to single type
  • Fixed assigning color literal value to background without parens
  • Added Color initializers
  • Added SceneViewController.snapshot() method

1.2.2 (2021-08-24)

  • Blocks that accept child values can now be called without braces around them
  • Fixed confusing error messages caused by mesh commands being unavailable in certain scopes
  • Made script evaluation cancellable in case of infinite iteration or recursion
  • Fixed bug in Viewer app where view fails to refresh after loading geometry
  • Improved and simplified error handling logic

1.2.1 (2021-08-19)

  • Fixed crash when for loop end index < start index
  • Improved print log output, especially for arrays/tuples and nested values
  • Added Loggable protocol for stringifying values logged using the ShapeScript print command
  • Replaced TokenType.description with TokenType.errorDescription to aid debugging
  • Text now supports using \n for line-breaks (this was documented as working, but never implemented)
  • Fixed confusing error message when first value of tuple matches expected type
  • Fixed nonsensical error message when a command is used in an expression
  • Bumped Euclid to 0.5.9, which includes fixes for extruded paths
  • Extruding along a compound path now forms a union between the resultant shapes
  • Fixed typos and improved help documentation
  • Fixed member lookup precedence
  • Improved test coverage

1.2.0 (2021-08-15)

  • Improved progressive rendering logic, reducing wait before seeing first results in viewer
  • Geometry cache is now limited to ~1GB per open document instead of being unbounded
  • Cached geometry is now cleared when document is closed instead of persisting for app lifetime
  • Invalid font names now produce an error instead of silently falling back to Helvetica
  • Paths are now drawn in white when background is set to a dark color or texture
  • Fixed an index out-of-bounds crash in the Levenshtein distance function
  • Bumped Euclid to 0.5.8, which includes several bug fixes
  • Renamed GeometryType.none to the more descriptive GeometryType.group
  • Made Geometry.mesh and Geometry.associatedData properties thread-safe using NSLock
  • Removed Scene.deepCopy() and Geometry.deepCopy() methods as instances are now thread-safe
  • Moved selection logic out of ShapeScriptLib and into Viewer example application
  • Fixed bug in Viewer where geometries would be deselected during progressive loading
  • Added LRUCache dependency

1.1.6 (2021-08-04)

  • Paths are now drawn using polygons strips, which looks sharper and renders more consistently
  • Made further improvements to cancelling in-progress rendering when reloading a file
  • Bumped Euclid to 0.5.4, which includes several bug fixes and performance improvements
  • Improved performance when rendering scenes with nested CSG operations or groups
  • Fixed rendering and bounds calculation of non-planar extruded shapes

1.1.5 (2021-08-02)

  • Info window in ShapeScript Viewer no longer includes imported models in texture count
  • Fixed a regression in ShapeScript Viewer 1.1.4 where error message wouldn't refresh correctly on reload
  • Improved error messaging for errors that occur in an imported file
  • Reloading a partially-rendered scene should now terminate the rendering more quickly, freeing up CPU
  • Rendering is now cancelled when document is closed (previously it continued in background)
  • Improved responsiveness of incremental rendering for complex scenes
  • Program source and statements properties are now public

1.1.4 (2021-07-31)

  • Increased time precision of document file monitoring in ShapeScript Viewer app
  • Improved threading a progress logging in ShapeScript Viewer app
  • Added Linux support for ShapeScriptLib (excluding rendering and text functions)
  • Made static color constants immutable
  • Bumped Euclid version to 0.5.3

1.1.3 (2021-07-10)

  • Fixed assertion failure if a parsing error occurs at the last character in the .shape file
  • Fixed bug in Path plane calculation that could result in corrupted extrusion shapes
  • Fixed a tessellation bug affecting anti-clockwise polygons

1.1.2 (2021-07-03)

  • Fixed bug where CRLF was treated as two separate linebreaks, resulting in a crash
  • Error column indicator is now better aligned when code contains wide characters (e.g. emoji)
  • Fixed inverted black/white squares on chessboard example

1.1.1 (2021-06-26)

  • Fixed operator associativity (addition/subtraction were previously right-associative)
  • Performing CSG operations on complex geometry no longer causes a stack overflow
  • Bumped Euclid version to 0.4.5

1.1.0 (2021-04-08)

  • Added support for background colors and images
  • Added debug console
  • Improved ShapeScript error handling
  • Object names are now included in info popup
  • Upgraded project to Swift 5.1
  • Bumped Euclid version to 0.4.0
  • Fixed Xcode warnings

1.0.1 (2020-09-03)

  • Added iOS and tvOS support to ShapeScript framework (Viewer app is still macOS only)
  • Bumped Euclid version to 0.3.5

1.0.0 (2020-09-02)

  • First release