All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
3.2.1 (2023-03-10)
3.2.0 (2023-03-10)
- 2d: fix line arc length (#503) (4f1cd59), closes #497
- docs: invalid source code link (#502) (3588d53), closes #499
- 2d: add Polygon component (#463) (15adb3e), closes #455
- display current package versions (#501) (2972f67)
- ui: list available shortcuts (#444) (443fcc9)
- use PossibleVector2 in Vector2 methods (#478) (8ccb44a)
- world space cache (#498) (633e9e1), closes #342
3.1.0 (2023-03-07)
- 2d: fix cache bbox for lines (#467) (9fd1444), closes #466
- 2d: fix letterSpacing (#448) (bb5ffc4), closes #447
- core: fix playback state (#471) (1c259d0)
- core: fix relative time (#461) (8d4946e)
- support multiple async players (#450) (d7ec469), closes #434
- 2d: add textAlign property (#451) (3d15825), closes #303
- core: add intersects method to BBox (#485) (604b0e7)
- core: presentation mode (#486) (c4f2e48)
- navigate to slide source (#490) (b5ae4bf)
- ui: presentation interface (#487) (1899f02)
3.0.2 (2023-02-27)
3.0.1 (2023-02-27)
3.0.0 (2023-02-27)
- 2d: fix initial value of endOffset (#433) (9fe82b3)
- 2d: fix performance issue with audio track (#427) (c993770)
- 2d: textDirection property for RTL/LTR text (#404) (f240b1b)
- core: clear semi-transparent backgrounds (#424) (1ebff1c), closes #423
- core: fix Vector2.exactlyEquals (#437) (028d264)
- core: render only within the range (#436) (36ccebe)
- ui: correctly reset zoom (#432) (a33ee14)
- multiple name changes
To avoid collisions, names of certain classes have changed:
Text => Txt
Image => Img
Rect (type) => BBox
Cache related methods of Node
have changed:
getCacheRect => getCacheBBox
cacheRect => cacheBBox
fullCacheRect => fullCacheBBox
The CodeBlock
property has changed:
CodeBlock.selectionOpacity => CodeBlock.unselectedOpacity
makeProject
no longer accepts some settings.
Settings such as background
and audioOffset
are now stored in the project
meta file.
2.6.0 (2023-02-24)
- 2d: add Icon Component (#306) (3479631), closes #305
- 2d: add save and restore methods to nodes (#406) (870e194)
- 2d: add z-index property to nodes (#398) (4280af3)
- add missing flexbox properties (#405) (4e78b4b)
- docs: improve the release blog (#410) (f56bbdb)
- upgrade code-fns for new theme options and lazy loading (#401) (8965ab1), closes #396 #322
- vite-plugin: add CORS Proxy (#357) (a3c5822), closes #338
2.5.0 (2023-02-20)
- 2d: fix signal initialization (#382) (ea36e79)
- 2d: handle floating point errors in acos (#381) (5bca8fd)
- plug memory leaks (#385) (de0af00)
- support color to null tweening (#387) (02e9f22)
- 2d: add closed property for circle (#378) (62a9605)
- 2d: make
View2D
extendRect
(#379) (93db5fc) - core: add fadeTransition (#384) (a248785)
- core: add spring interpolation (#356) (1463b15)
- core: add step parameter to range function (#373) (923209a)
2.4.0 (2023-02-18)
- 2d: fix Gradient and Pattern signals (#376) (6e0dc8a)
- 2d: fix layout calculation for nodes not explicitly added to view (#331) (528e2d5)
- 2d: format whitespaces according to HTML (#372) (83fb565), closes #370
- core: playback speed is reset after saving with faulty code (#204). (#339) (6771e5e)
- docs: fix search (#336) (e44ec02)
- typo on codeblock remove comments (#368) (2025adc)
- ui: fix inspector tab (#374) (c4cb378)
- vite-plugin: fix js template (#337) (3b33d73)
- vite-plugin: ignore query param in devserver (#351) (5644d72)
- 2d: add default computed values for signals (#259) (18f61a6)
- 2d: add moveBelow, moveAbove and moveTo methods to Node (#365) (16752a3)
- 2d: unify layout properties (#355) (3cae97e), closes #352
- core: add Matrix2D type (#340) (66b41e6)
- core: error double event name (#341) (053b2a6)
- docs: add search (#335) (48f74a6)
- docs: added CodeBlock documentation (#302) (73f7221)
- ui: add external link to docs (#346) (fc4ee5d)
- ui: shift + right arrow moves to last frame (#354) (4b81709), closes #353
2.3.0 (2023-02-11)
- 2d: make Text respect textWrap=pre (#287) (cb07f4b)
- ui: fix play-pause button (#299) (191f54a)
- ui: remove glossy effect in Safari (#292) (9c062b2) Features 2d: add antialiased signal to Shape (#282) (7c6905d) 2d: add LaTeX component (#228) (4c26d2a) 2d: add smooth corners and sharpness to rect (#310) (f7fbefd) added a theme property to the CodeBlock component (#279) (fe34fa8) core: add debug helper function (#293) (b870873) core: additional easing functions (#274) (f81ce43) core: disallow tweening to/from undefined values (#257) (d4bb791) docs: always re-build api references in build mode (#298) (27a4d96), closes #294 2.2.0 (2023-02-09) Features 2d: add video component property getter (#240) (59de5ab) project variables (#255) (4883295) 2.1.0 (2023-02-07) Bug Fixes 2d: fix font ligatures in CodeBlock (#231) (11ee3fe) 2d: fix Line cache (#232) (a953b64), closes #205 2d: handle lines with no points (#233) (8108474), closes #212 2d: improve Rect radius (#221) (3437e42), closes #207 2d: stop code highlighting from jumping (#230) (67ef1c4) core: fix looping (#217) (a38e1a7), closes #178 docs: fix typo in configuration.mdx (#185) (ca67529) fix compound property setter (#218) (6cd1b95), closes #208 #210 vite-plugin: add missing headers to html (#219) (2552bcf), closes #201 Features add useDuration helper (#226) (fa97d6c), closes #171 2.0.0 (2023-02-04) Bug Fixes 2d: add missing shape export (#111) (02a1fa7) 2d: fix import order (#94) (bcc0bcf), closes #76 2d: fix Line overview crashing (#142) (6bd5fd9) 2d: some signal setters not returning owners (#143) (09ab7f9) 2d: switch iframes to ShadowDOM (#90) (86176be) add missing Arrow setters (#82) (49843c9) add missing canvas package (26c8f4f) add missing public path (#40) (48213de) add monospace font fallback in case JetBrains Mono is missing (#24) (276a310), closes #16 bug with createEaseInOutBack in interpolationFunctions.ts (#69) (2b95876) change executable file permissions (#38) (23025a2) code will trigger PrismJS such that JSX is correctly highlighted (#20) (b323231), closes #17 core: add missing type references (#41) (325c244) core: keep falsy values with deepTween (#45) (93c934f) create missing output directories (#13) (17f1e3f), closes #4 create: fix package type (#40) (f07aa5d) detect missing meta files (#83) (d1e2193), closes #79 display newlines in Code correctly (#38) (df8f390) docs: fix a typo (#55) (2691148) docs: fix broken links (#105) (f79427d) docs: fix links to examples (#106) (d445b56) docs: fix small typo (#107) (fe6cbb0) docs: improve predicate type (#148) (3abee4f) docs: name collisions between members (#117) (1e52b94) docs: small corrections (#108) (9212343) empty time events crashing (a1c53de) fix docs workflow (#102) (f591169) fix docs workflow (#103) (b9e2006) fix docs workflow (#104) (7e59a1a) fix hot reload (#26) (2ad746e) fix meta file version and timing (#32) (a369610) fix player state not being saved (#85) (74b54b9) fix scaffolding (#93) (95c55ed) fix tsdoc comments (#21) (4b6cb66), closes #18 legacy: add missing files (#61) (fad87d5) load project state correctly (#27) (8ae0233) make panes scrollable (#14) (dc9fd38) marked index.mjs as executable such that the cli will run on linux (#47) (722d5eb), closes #46 MeshBoneMaterial opacity (24db561) pre-commit hook will now work on linux and mac (#51) (ef80035) prevent scrolling timeline with arrow keys (#4) (dfc8108) previous scene being rendered twice (#97) (90205bd) previous scene invisible when seeking (65e32f0) previous scenes not getting disposed (bf3a1fc) range middle-click expansion (1c0b724) re-render the scene when canvas changes (#55) (191f96d) remove inconsistency in playhead controls (#1) (58cdb4a) respect child origins in LinearLayout (5ee114d) restrict the corner radius of a rectangle (#9) (cc86a4a), closes #8 save time events only if they're actively used (#35) (bd78c89), closes #33 #34 save timeline state (9d57b8a) support hmr when navigating (370ea16) support nested threads (#84) (4a4a95f) the resolution fields in Rendering no longer reset each other (#73) (ddabec5) timeline will no longer seek when scrolling using the scrollbar (#19) (c1b1680) ui: don't seek when editing time events (#26) (524c200) ui: downgrade preact (#1) (5f7456f) ui: misaligned overlay (#127) (0379730) ui: prevent context menu in viewport (#123) (0fdd85e) ui: prevent timeline scroll when zooming (#162) (b8278ae) use correct scene sizes (#146) (f279638) Code Refactoring remove legacy package (6a84120) Features 2d: add methods for rearranging children (#81) (63f6c1a) 2d: add option for preformatted text (#147) (989be53) 2d: code selection and modification (#163) (e8e884a) 2d: construct lines using signals (#133) (2968a24) 2d: improve property declarations (27e7d26) 2d: improve Rect corner radius (#120) (b471fe0) 2d: simplify layout prop (c24cb12) 2d: unify desired sizes (#118) (401a799) add advanced caching (#69) (2a644c9) add base class for shapes (#67) (d38c172) add basic documentation structure (#10) (1e46433), closes #2 add basic logger (#88) (3d82e86), closes #17 add basic transform to Node class (#83) (9e114c8) add cloning (#80) (47d7a0f) add CodeBlock component based on code-fns to 2D (#78) (ad346f1) add default renderer (#63) (9255490), closes #56 #58 add deprecation support (#130) (da0e104) add docs to monorepo (#22) (129d557) add E2E testing (#101) (6398c54), closes #42 add ease back interp functions (#30) (c11046d) add eslint (658f468) add Grid node (e1f83da) add inspection (#82) (4d7f2ae) add layered layout (381b2c0) add LayoutText (328b7b7) add markdown logs (#138) (e42447a) add meta files (#28) (e29f7d0), closes #7 add missing layout props (#72) (f808a56) add node spawners (#149) (da18a4e) add polyline (#84) (4ceaf84) add pull request verification (d91bab5) add random number generator (#116) (d505312), closes #14 add rendering again (#43) (c10d3db) add reparent helper (80b95a9) add scaffolding package (#36) (266a561), closes #30 add support for meta files (#11) (456790a) add support for npm workspaces (741567f) add Text and Image components (#70) (85c7dcd) add video node (#86) (f4aa654) added color space option to Project and Player (#89) (e1e2ac4), closes #80 added Color Space option to Rendering panel (#24) (33f691d) added custom resolution inputs to the rendering pane (#20) (1f799b6) added deepTween function and rewrote colorTween to use colorjs.io (#88) (eb7ca3c), closes #73 #78 added file type and quality options to rendering panel (#50) (bee71ef), closes #24 added useContext and useContextAfter hooks (#63) (352e131), closes #58 animation player (#92) (8155118) AnimationClip (681146a) arc tween ratio (27dbb0b) audio offset (88f40aa) audio playback (e9a6fdb) audio toggle control (300f18e) audio waveform track (9aff955) better dependencies between packages (#152) (a0a37b3) better dependencies between packages (#153) (59a73d4) better naming conventions (#62) (a9d764f) better playback controls (796ae33) better time events (8c2bf27) better time events (1acd71b) blob rendering (4dff949) browser based renderer (13dc24c) circular mask for surfaces (4db62d8) clamp function (94543d1) color picker (ac48055) configurable framerate and resolution (a715f5c) configurable framerate and resolution (a591683) connections (49254fc) core: add configurable line numbers (#44) (831334c), closes #12 core: switch to vitest (#99) (762eeb0), closes #48 create new release (20282e9) custom loaders (5a3ab9a) decouple Konva from core (#54) (02b5c75), closes #49 #31 detect circular signal dependencies (#129) (6fcdb41) directional padding and margin (441d121) display time in seconds (0290a9c) docs: add logo (#23) (78698e4) docs: add migration guide for v10 (#37) (0905daa) docs: visual changes (be83edf) editor improvements (#121) (e8b32ce) extract konva to separate package (#60) (4ecad3c) filter reordering (#119) (2398d0f) follow utility (fddfc67) force rendering to restart seek time (#14) (e94027a), closes #6 framerate-independent timing (#64) (6891f59), closes #57 function components (178db3d) general improvements (320cced) general improvements (dbff3cc) grid (d201a4d) grid and debug overlays (895a53a) grid overlay (f7aca18) implement absolute scale setter (842079a) implement properties tab (#10) (e882a7f) improve async signals (#156) (db27b9d) improve layouts (9a1fb5c) improve surface clipping (#41) (003b7d5) introduce basic caching (#68) (6420d36) jsx (3a633e8) keyboard shortcuts (4a3a7b5) layouts (749f929) loading indication (93638d5) make exporting concurrent (4f9ef8d) make scenes independent of names (#53) (417617e), closes #25 make surfaces transparent by default (#42) (cd71285), closes #25 mask animation (5771963) merge properties and signals (#124) (da3ba83) minor console improvements (#145) (3e32e73) minor improvements (403c7c2) minor improvements (#77) (7c6e584) move back playhead by a frame (#18) (b944cd7) navigate to scene and node source (#144) (86d495d) new animator (#91) (d85f2f8) open time events in editor (#87) (74b781d) package separation (e69a566) pan with shift and left click (#7) (4ff8241), closes #5 playback controls (94dab5d) player: add auto mode (c107259) player: improve accessibility (0fc9235) Promise support (711f793) remove strongly-typed-events (#48) (41947b5) remove ui elements (8e5c288) renderer ui (8a4e5d3) rendering (60ccda7) replaced scene.transition with useTransition (#68) (f521115), closes #56 scene transitions (d45f1d3) sidebar (d5345ba) signal error handling (#89) (472ac65) simplify size access (#65) (3315e64) simplify size access further (#66) (9091a5e) simplify the process of importing images (#39) (0c2341f), closes #19 sprites and threading (a541682) support for multiple projects (#57) (573752d), closes #141414 support lower framerate (3c81086) support multiple players (#128) (24f75cf) surfaceFrom animation (77bb69e) surfaces (99f9e96) switch to monorepo (6c8d190), closes #23 #86 #49 switch to signals (#64) (d22d237) switch to Vite (#28) (65b9133), closes #141414 #13 threading (e9f6b2a) three.js integration (79cc975) time events (f47cc66) time events (026a284) time parameter for tweens (3fe90ed) timeline range (ed2d78d) timeline tracks (93a89cd) turn Layout into node (#75) (cdf8dc0) ui: timeline overhaul (#47) (4232a60), closes #20 ui: visual changes (#96) (3d599f4) unify core types (#71) (9c5853d) unify references and signals (#137) (063aede) update core to 6.0.0 (#17) (f8d453b) use Web Audio API for waveform generation (817e244) use Web Audio API for waveform generation (ba3e16f) useAnimator utility (ad32e8a) viewport, playback, and timeline (c5f9636) vite-plugin: improve audio handling (#154) (482f144) waveform data (400a756) Reverts "ci(release): 9.1.3 [skip ci]" (62953a6) chore(release): 1.4.0 [skip ci] (d6121ae) ci(release): 1.0.1 [skip ci] (#175) (161a046) ci(release): 2.0.0 [skip ci] (#176) (551096b) BREAKING CHANGES remove legacy package change names of timing and interpolation functions TweenFunction is now called InterpolationFunction. Individual functions are now called [type]Lerp instead of [type]Tween. For instance: colorTween is now colorLerp. InterpolationFunction is now called TimingFunction. This name is better aligned with the CSS spec. change to import paths See the migration guide for more info. change the way scenes are imported Scene files no longer need to follow the pattern: [name].scene.tsx. When importing scenes in the project file, a dedicated ?scene query param should be used: import example from './scenes/example?scene'; export default new Project({ name: 'project', scenes: [example], }); change the overall structure of a project vite and @motion-canvas/vite-plugin packages are now required to build a project: npm i -D vite @motion-canvas/vite-plugin The following vite.config.ts file needs to be created in the root of the project: import {defineConfig} from 'vite'; import motionCanvas from '@motion-canvas/vite-plugin'; export default defineConfig({ plugins: [motionCanvas()], }); Types exposed by Motion Canvas are no longer global. An additional motion-canvas.d.ts file needs to be created in the src directory: /// <reference types="@motion-canvas/core/project" /> Finally, the bootstrap function no longer exists. Project files should export an instance of the Project class instead: import {Project} from '@motion-canvas/core/lib'; import example from './scenes/example.scene'; export default new Project({ name: 'project', scenes: [example], // same options as in bootstrap() are available: * Animator.inferTweenFunction now returns deepTween, which does not work exactly as before, though should be a viable replacement in most cases. * `scene.transition()` has been replaced by `useTransition` Any use of slide transition must be updated from ```ts yield* scene.transition(slideTransition()); to yield* slideTranstion(); Any transitions must be rewritten to utilize useTransition. Konva patches are not imported by default Projects using KonvaScenes should import the patches manually at the very top of the file project: import '@motion-canvas/core/lib/patches' // ... bootstrap(...); getset import path has changed: import {getset} from '@motion-canvas/core/lib/decorators/getset'; change the type exported by scene files Scene files need to export a special SceneDescription object instead of a simple generator function. change event naming convention The names of all public events now use the following pattern: "on[WhatHappened]". Example: "onValueChanged". change how images are imported By default, importing images will now return their urls instead of a SpriteData object. This behavior can be adjusted using the ?img and ?anim queries. change time events API waitFor and waitUntil were moved They should be imported from @motion-canvas/core/lib/flow.