Releases: KaliedaRik/Scrawl-canvas
Scrawl-canvas v8.14.0
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 useOKLCH
colors rather thanHCL
colors for its calculations. Thereduce-palette
filter has also moved over to usingOKLAB
-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
andmodulateOk
filters introduce channel manipulations forOKLAB
colors - The
rotateHue
andnegative
filter calculate their effects usingOKLCH
colors
- The
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
- Reduce-palette filter improvements experiment by @KaliedaRik in #96
- Initial MVP solution to display context menu by @KaliedaRik in #97
- Small improvements and bug fixes August 2024 by @KaliedaRik in #94
- Bump version to v8.14.0 by @KaliedaRik in #98
Full Changelog: 8.13.2...v8.14.0
Scrawl-canvas v8.13.2
Breaking changes:
None
New functionality:
None
Improvements:
- Various minor improvements in codebase
- Update dev dependencies to latest versions
Bugfixes:
None
What's Changed
- Update readme and bump dev dependency by @KaliedaRik in #91
- Minor enhancements month May 2024 by @KaliedaRik in #90
- Bump braces from 3.0.2 to 3.0.3 by @dependabot in #92
- Bump to v8.13.2 by @KaliedaRik in #93
Full Changelog: v8.13.1...8.13.2
Scrawl-canvas v8.13.1
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
- Bump tar from 6.2.0 to 6.2.1 by @dependabot in #88
- Hotfixes following release of v8.13.0 by @KaliedaRik in #87
- Bump to v8.13.1 by @KaliedaRik in #89
Full Changelog: v8.13.0...v8.13.1
Scrawl-canvas v8.13.0
Breaking changes:
Text rendering
- The
Phrase
entity has been deprecated and removed from the library. Two new entitys replace it:Label
andEnhancedLabel
. 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 toscrawl.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'shere
object - When resorting of the Canvas element's text and navigation
holds
is required, they will be marked withARIA-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 defaultfalse
, but if users find their canvases breaking in mysterious ways they should consider setting the attribute totrue
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
Breaking changes:
- Phrase entity support for
font-variant
andfont-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
andblurAction
attributes totrue
. 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 adata-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
- Experiment - modify screen capture stream by @KaliedaRik in #57
- Deprecate font stretch and variant functionality by @KaliedaRik in #59
- Add star-history chart to README by @KaliedaRik in #61
- Investigate Wide Gamut 2D Graphics (p3 color) by @KaliedaRik in #60
- Support new CSS color() strings by @KaliedaRik in #62
- Separate workstore from filter engine by @KaliedaRik in #64
- Add a frame rate limit to animation objects by @KaliedaRik in #65
- Eye dropper api demo by @KaliedaRik in #66
- Investigate Popover API by @KaliedaRik in #67
- Add order functionality for anchors buttons by @KaliedaRik in #69
- Bump to v8.12.0 by @KaliedaRik in #70
- v8.12 - late lint updates by @KaliedaRik in #71
Full Changelog: v8.11.0...v8.12.0
Scrawl-canvas v8.11.0
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
- Bump word-wrap from 1.2.3 to 1.2.5 by @dependabot in #42
- Investigate yarn update by @KaliedaRik in #43
- Add .npmignore file to reduce npm package by 90% by @KaliedaRik in #45
- Add the Knip tool to the dev toolchain by @KaliedaRik in #46
- Licence update 2023 by @KaliedaRik in #47
- Update knip dependency to v3.8.1 by @KaliedaRik in #52
- Minor bugfixes Dec 2023 by @KaliedaRik in #53
- Preparation to release v8.11.0 by @KaliedaRik in #54
- Test and finalize v8.11.0 by @KaliedaRik in #55
- PRs waiting to be merged into base as v8.11.0 by @KaliedaRik in #44
Full Changelog: v8.10.4...v8.11.0
Scrawl-canvas v8.10.4
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
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
Breaking changes:
None
New functionality:
None
Improvements:
- Added linter to developer toolchain
Bugfixes:
- Fixed bugs uncovered by linter
What's Changed
- From const to let in a few places by @GoodNovember in #29
New Contributors
- @GoodNovember made their first contribution in #29
Full Changelog: v8.10.1...v8.10.2
Scrawl-canvas v8.10.1
Breaking changes:
None
New functionality:
None
Improvements:
- Renamed some module files to restore a consistent naming strategy
- Refactored modules to make use of a new
systems-flags
module - Refactored modules to make use of a new
shared-vars
module - Minor efficiency improvements (
Object.freeze()
,Object.seal()
, new array pool, etc).
Bugfixes:
None of note
Full Changelog: v8.10.0...v8.10.1