Skip to content

Releases: KaliedaRik/Scrawl-canvas

Scrawl-canvas v8.15.0

22 May 18:52
85dee6d
Compare
Choose a tag to compare

Breaking changes:

  • Fixing the scaled positioning bug affecting Oval, Rectangle and Tetragon entitys means that these entitys now act correctly when scaled. Canvas scenes previously created with workarounds for the issue will need to be updated
  • Tighten up the checks around which DOM elements can become SC Stacks, and which ones can become SC Elements. This may break existing Stack-based projects.
  • Deprecate and remove the stack.apply, canvas.apply and element.apply functions, replacing them with new stack.reset and canvas.reset functions.
  • VideoAsset object around wrapping media streams - the factory api for creating these asset wrappers has changed.

New functionality:

  • Artefact group attribute will now accept a Cell object as a value
  • New Loom attribute sourceExpansionFactor to help solve poor display of distorted images
  • Added functionality to allow the scaling of entity shadows (similar to scaling line widths), controled by a new flag attribute scaleShadow
  • Added a new splitShift function to allow for the movement of Cell edge strips from one side of the Cell to the other. Should help to make it easier to build animated tiling and infinite scroll scenes
  • New Cell functions - getCellData, paintCellData - that supply the user with a capture of the Cell engine's imageData, alongside a new pixelState object which gives each pixel some state
  • Allow Group objects to remove controlled DOM artefacts from the web page
  • New <canvas> element data-will-read-frequently boolean attribute
  • Cell pixelState now includes full polar coordinate (from canvas center) data
  • New filters: alpha-to-luminance, luminance-to-alpha
  • New functionality to help developers initialize DOM form control elements
  • VideoAsset can now handle audio-only stream sources

Improvements:

  • Security - updated dev dependency packages to latest version
  • Documentation - started writing some higher level overview docs of the library's philosophy and its code base's practicalities (early work-in-progress)
  • Typescript annotations in the test demo files
  • Cleaned up factory/group.js file, removing unused code
  • Improvements (and a minor bugfix) to the blur and gaussianblur filters - which now have their own Demo tests.
  • Cleared out the DOM-related CSS checks for Stack, Canvas and Element artefacts - there's no need for this sort of functionality in SC now. Instead we introduce a short list of CSS properties which dev-users cannot update using SC set({ css: {key: value} }) functionality.
  • Updated test demo DOM-003 to share a better example of how to wrap SVG elements into an SC Stack.
  • Ripped out all code relating to the CSS smoothFont property - which is not part of the Web standards.
  • Updated the Element kill function to accept a boolean argument which, when set to false, will not remove the associated DOM element from the document.
  • Removed redundant code, relating to cloning functions, from SC clone functionality across the repo.
  • Small Tween and Ticker performance improvements
  • New demos for offset, offsetChannels filters
  • Draft a Runbook for the library (incomplete)
  • Update documentation to accommodate the new Runbook
  • Add an LLM summary .md file to the repo
  • Updates to the .d.ts file

Bugfixes:

  • Small Vector bug fixed
  • Fixed issue where entity GCO and filters were interfering with each other, preventing the display of entitys on non-base Cells
  • Fixed a scaled positioning issue for Oval, Rectangle and Tetragon entitys
  • Fixed a dynamic radius positioning issue for Star and Cog entitys
  • The gaussianblur filter was spreading beyond its entity's shape. This has been fixed in a non-breaking way so the errant functionality remains the default.
  • Unnecessary mixins were being added to mixin/dom.js - these have been moved to factory/canvas.js where they are needed. Bug was not breaking functionality in any way.
  • Fixed the (long neglected) Element stampOrder bug.
  • Fix bugs associated with prefers-contrast functionality
  • Deprecate and remove the Ticker object makeTickerUpdateEvent code
  • Fix bug where user positions an artefact wrt an undefined artefact
  • Fix artefact removeClasses bug
  • Fix Tween and Action object target setting functionality
  • Fix other minor Ticker and Tween object bugs
  • Fix filter engine image upload bug
  • Fix tiny EnhancedLabel space calculation bug
  • Deprecate and remove RenderAnimation object .error function hook
  • Fix VideoAsset object streaming bugs
  • Fix Group object ordering bug

What's Changed

New Contributors

Full Changelog: v8.14.0...v8.15.0

Scrawl-canvas v8.14.0

01 Sep 17:39
1aa6f94
Compare
Choose a tag to compare

Breaking changes:

  • Work on improving the filters code has led to some breaking changes to the display output by various filters - in particular the blend filter has been fixed to use OKLCH colors rather than HCL colors for its calculations. The reduce-palette filter has also moved over to using OKLAB-based color distance calculations which will cause existing canvases utilising that functionality to break their displayed output.

New functionality:

  • Four new filters have been added
    • The modifyOk and modulateOk filters introduce channel manipulations for OKLAB colors
    • The rotateHue and negative filter calculate their effects using OKLCH colors

Improvements:

  • Various minor efficiency improvements in codebase
  • Demo rapier-001 removed - as much as we want to demo SC being used alongside some Wasm-based Rust, keeping up with the changes in the Rapier physics codebase was proving to be unwelcome and frustrating work.

Bugfixes:

  • Fixed some documentation inaccuracies and errors

What's Changed

Full Changelog: 8.13.2...v8.14.0

Scrawl-canvas v8.13.2

24 Jul 19:54
69515fb
Compare
Choose a tag to compare

Breaking changes:

None

New functionality:

None

Improvements:

  • Various minor improvements in codebase
  • Update dev dependencies to latest versions

Bugfixes:

None

What's Changed

Full Changelog: v8.13.1...8.13.2

Scrawl-canvas v8.13.1

03 May 18:11
a78e2af
Compare
Choose a tag to compare

Breaking changes:

None

New functionality:

None

Improvements:

None

Bugfixes:

  • Fix constantSpeedAlongPath bugs that were creating erratic movement along a path. The fix involved removing the redundant ??? attribute from path-based entitys.
  • Fix an issue with EnhancedLabel entitys where they broke when required to stamp themselves on non-base Cell canvases.

What's Changed

Full Changelog: v8.13.0...v8.13.1

Scrawl-canvas v8.13.0

28 Apr 06:39
da00f72
Compare
Choose a tag to compare

Breaking changes:

Text rendering

  • The Phrase entity has been deprecated and removed from the library. Two new entitys replace it: Label and EnhancedLabel. See the new functionality section below for details about these new entitys.

Cell rendering

  • During this work a major bug in determining non-base Cell sizes was uncovered. The fix (detailed in the bugfixes section below) does carry the risk of breaking canvases which make use of non-base Cells.

New functionality:

  • Label entity - a single line text rendering entity. See new Demos canvas-201 - canvas-205 to discover its full functionality.
  • EnhancedLabel entity - a multiline, styleable text layout engine which uses other artefacts (not just blocks/rectangles) to act as a template in which it can stamp its text. Can handle international fonts, vertical text, text-along-a-path, local text unit positioning and styling, etc. See new Demos canvas-206 - canvas-211 to uncover its full functionality.

With the introduction of the EnhancedLabel entity, we have also take the opportunity to add the ability for SC artefacts to pivot themselves to individual text units within the EL entity. This is achieved by pivoting to the EL and indicating the desired text unit by supplying its index number in a new pivotIndex (also for line/quadratic/bezier entitys: startControlPivotIndex, controlPivotIndex, endControlPivotIndex, endPivotIndex)

Improvements:

Library

We have added new convenience functions for finding/retrieving existing objects from the library. These include:

  • scrawl.findArtefact('name')
  • scrawl.findAsset('name')
  • scrawl.findCanvas('name')
  • scrawl.findElement('name')
  • scrawl.findEntity('name')
  • scrawl.findFilter('name')
  • scrawl.findGroup('name')
  • scrawl.findPattern('name')
  • scrawl.findStack('name')
  • scrawl.findStyles('name')
  • scrawl.findTween('name')

New font checking functions:

  • scrawl.checkFontIsLoaded('name')
  • scrawl.getFontMetadata('name')
  • scrawl.purgeFontMetadata()
  • scrawl.recalculateFonts()

New shorthand convenience function

  • scrawl.purge('namespace') - this maps to scrawl.library.purge('namespace').

Canvas

  • The Canvas artefact has been refactored to create all of its various hold HTML elements within the canvas shadow DOM; it no longer pollutes the wider DOM by attaching (some of) these elements to the end of the DOM document.
  • New convenience function canvas.getBase() to retrieve the base Cell
  • New convenience function canvas.getBaseHere() to retrieve the base Cell's here object
  • When resorting of the Canvas element's text and navigation holds is required, they will be marked with ARIA-busy="true" attributes while the resorting progresses.
  • The Canvas artefact's base Cell is now placed at the end of the Display cycle compile step by default.

Render objects

  • A new animation.renderOnce() function to trigger a Display cycle render of an animation that is not currently running
  • A new animation.updateHook(hookName, function) function to dynamically update hook functions

Pattern

  • Cell artefacts acting as a Pattern asset no longer have to be explicitly marked with the useAsAsset flag.
  • New get strings can be used on a Pattern object to retrieve data about the Pattern's matrix: matrixA, matrixB, matrixC, matrixD, matrixE, matrixF, stretchX, stretchY, skewX, skewY, shiftX, shiftY.

Miscellaneous

  • Noise asset gradient colors can now be set directly on the asset using noise.set({ colors: [...]}).
  • Reaction-diffusion asset instances - retrieve the asset's current generation using rd.get('generation').
  • The deprecated (and useless) binary filter has been removed from the code base.
  • New Group convenience function group.getArtefactNames() - returns an array of name Strings for all the artefacts in the Group object.
  • The entity state object now includes the following attributes: direction, fontKerning, textRendering, letterSpacing, wordSpacing, fontStretch, fontVariantCaps.
  • There is no longer a need for us to offer alternative code paths for different browsers. Thus we have removed all browser detection code from the code base.

Bugfixes:

  • Identified a bug where non-base Cell objects were setting their dimensions with reference to the display canvas dimensions, not their base Cell's dimensions. However, as this is a longstanding undetected issue, we have decided not to directly fix, but instead added a Cell artefact flag attribute setRelativeDimensionsUsingBase - this is by default false, but if users find their canvases breaking in mysterious ways they should consider setting the attribute to true when creating a new non-base Cell.
  • Fixed a memory leak involving Emitter entity particleHistory objects

Full Changelog: v8.12.0...v8.13.0

Scrawl-canvas v8.12.0

13 Jan 15:06
a2c9e99
Compare
Choose a tag to compare

Breaking changes:

  • Phrase entity support for font-variant and font-stretch attributes has been removed. No browser was acting on these attributes when used in font strings, so little/no damage is expected from this change. There is no plan to support these text attributes going forward as their implementation in the 2D Canvas API specs are incompatible with the way Scrawl-canvas works internally.
  • Anchor objects (and the new Button objects) now default their focusAction and blurAction attributes to true. These attributes are used to tie keyboard navigation and the canvas display closer together.

New functionality:

  • scrawl.importScreenCapture - Similar to the existing scrawl.importMediaStream functionality which makes it easier for users to use media streams (eg: from device cameras) in canvas animations, this new function call will capture a real-time browser tab, window or an entire screen as a video source for use in the animation.
  • Scrawl-canvas canvases can now support wide-gamut colors (the display-p3 color space) by adding a data-canvas-color-space="display-p3" attribute to the <canvas> element in HTML code.
  • Animation objects can now take a new maxFrameRate attribute to limit the speed at which animations run. This is a necessary change as devices/browsers that run at 120fps become more common.
  • A new Scrawl-canvas Button object - this works similarly to existing Anchors, except they trigger some action in response to user action (whereas Anchors trigger a navigation to a new web page).

Improvements:

  • Scrawl-canvas now supports defining colors using the CSS color() format, where the browser itself also supports displaying those colors in the <canvas> element.
  • Some minor improvements to gradient efficiency.
  • New demo test exploring how to use the EyeDropper API (which is only supported by Chrome)
  • New demo to test that a Scrawl-canvas canvas behaves appropriately and accessibly when included in HTML markup using the new Popover API (which is not yet supported by Firefox)
  • Added a new tabOrder attribute to Anchor (and Button) objects. This allows the tabbing order of these objects to be updated dynamically without affecting the tabbing order of elements in the wider web page beyond the <canvas> element.

Bugfixes:

  • We have removed the legacy <nav> div which Scrawl-canvas added at the top of each web page on which it ran.
  • We have fixed an annoying tabbing order bug in demo canvas-027 (the interactive video demo).

What's Changed

Full Changelog: v8.11.0...v8.12.0

Scrawl-canvas v8.11.0

23 Dec 13:01
64af53b
Compare
Choose a tag to compare

Breaking changes:

We have updated the licence wording which users will need to review and agree to if they wish to continue using this library. The licence remains MIT-inspired.

New functionality:

None

Improvements:

This release is mainly backoffice updates to dev dependencies

  • Adding knip to the testing rig
  • Move to the browser-sync server for local development

Bugfixes:

Removing unused code identified by Knip; minor bugfixes uncovered by the typescript and eslint updates

What's Changed

Full Changelog: v8.10.4...v8.11.0

Scrawl-canvas v8.10.4

01 Jul 12:18
Compare
Choose a tag to compare

Breaking changes:

None

New functionality:

None

Improvements:

Phrase entitys can now display emoji characters

  • Demos canvas 015, 015a, 16, 17, 18 updated to test this improvement

New demo DOM 018 created to test the functionality of a canvas element which expands to fullscreen using the Fullscreen Web API

Bugfixes:

None

Full Changelog: v8.10.3...v8.10.4

Scrawl-canvas v8.10.3

01 May 12:46
Compare
Choose a tag to compare

Breaking changes:

None

New functionality:

None

Improvements:

Extended linter checks. In addition to the default ESLint checks, we now check for:

  • no-inline-comments
  • no-sequences
  • no-unused-expressions
  • no-useless-call
  • no-useless-return
  • no-var
  • prefer-const
  • no-trailing-spaces
  • radix

Bugfixes:

Fixed bugs uncovered by linter

Full Changelog: v8.10.2...v8.10.3

Scrawl-canvas v8.10.2

27 Apr 12:15
Compare
Choose a tag to compare

Breaking changes:

None

New functionality:

None

Improvements:

  • Added linter to developer toolchain

Bugfixes:

  • Fixed bugs uncovered by linter

What's Changed

New Contributors

Full Changelog: v8.10.1...v8.10.2