tldraw

Infinite canvas.

OTHER License

Downloads
2.2M
Stars
32.3K
Committers
162

Bot releases are hidden (Show)

tldraw - v3.0.2 Latest Release

Published by ds300 about 1 month ago

tldraw - v2.0.0-alpha.13

Published by ds300 over 1 year ago

This is a big one! Our last release (alpha.12) was a few months ago, after which we decided to push forward with some big breaking changes that we had been putting off. This will likely remain our most breaking release, so the notes below may not be as helpful for gathering what's changed. Check the updated docs at tldraw.dev.

Some highlights:

  • The editor.css and ui.css are now combined as tldraw.css, so please update your imports from @tldraw/tldraw
  • Assets are now provided by a CDN by default, so no need to copy those into your project
  • We've removed signia and signia-react from dependencies: they're folded in as @tldraw/state
  • We've added a new ExternalContentManager for customizing how files/ images / text and other content are handled on paste or drop
  • @tldraw/tlstore is now @tldraw/store
  • @tldraw/tlvalidate is now @tldraw/validate
  • @tldraw/indices is added for our fractional indexing
  • The ShapeUtil API requires fewer overrides and has fewer properties: caching is now handled on the Editor class methods
  • We've introduced a new Styles API for hooking into our existing styles or defining your own shared properties that should move together.

Here's the big list!


Release Notes

Fix crash when rotating a deleted shape (#1658)

  • Fixed a crash when trying to rotate a deleted shape.

[improvement] store snapshot types (#1657)

  • [dev] Rename StoreSnapshot to SerializedStore
  • [dev] Create new StoreSnapshot as type related to getSnapshot/loadSnapshot

[fix] pen mode touches (#1655)

  • Removes three touches to cancel pen mode feature.

(2/2) [docs] Fix links to API. (#1654)

  • Documentation: Simplified links to the API reference.

(1/2) [docs] Restore some missing changes (#1652)

  • None (Docs internals)

[docs] Remove embeds page (#1653)

  • Documentation: Removed unused Embeds page.

Fix text shapes not having colour (#1649)

  • None: Fixes an unreleased bug.

Styles API docs (#1641)

--

Styles API follow-ups (#1636)

--

docs: remove not accepting contributions notice (#1647)

  • Remove not accepting contributions notice from README

Fix SVG cursors not being used (#1639)

  • None: Fixing an unreleased bug.

[docs] Add table of contents to Editor page (#1642)

  • Documentation: Added a table of contents to the Editor page.

speed up playwright and add visual regression tests (#1638)

--

[docs] Allow sidebar to be scrolled on short screens (#1632)

  • Documentation: Fixed the sidebar being unscrollable on some short screens.

[docs] Add feedback when you search (#1633)

  • Documentation: Added some immediate feedback when you search.

[docs] Separate some pages out of the Docs section (#1626)

  • Documentation: Restructured the sidebar for clarity.

[docs] Fix wrong cursor when hovering buttons (#1630)

  • Documentation: Fixed the wrong cursor showing when hovering some buttons.

[docs] Tighten up wording & structure of Usage page (#1624)

  • Documentation: Impoved clarity of wording and structure of the Usage page.

[docs] Tighten up Editor page introduction (#1622)

  • Documentation: Simplified the Editor page.

[docs] Tighten up Introduction page (#1621)

  • Documentation: Simplified the Introduction page.

Lokalise: Translations update (#1618)

  • Added more translations for Simplified Chinese.

[docs] Simplify paths for uncategorised pages (#1619)

  • Documentation: Cleaned up some paths.

ShapeUtil refactor, Editor cleanup (#1611)

  • [editor] renames defaultProps to getDefaultProps
  • [editor] removes outline, outlineSegments, handles, bounds
  • [editor] renames renderBackground to backgroundComponent

Revert "Update dependencies (#1613)" (#1617)

Remove on drop override (#1612)

  • [editor] Remove onDropOverride

Make resizeBox a regular function (#1610)

  • [editor] Change resizeBox to be a regular function.

Rename ShapeUtil.render -> ShapeUtil.component (#1609)

  • [editor] rename ShapeUtil.render to ShapeUtil.component

tldraw.css (#1607)

  • [tldraw] Removes editor.css and ui.css exports, replaces with tldraw.css

[fix] camera culling (#1602)

  • [editor] Adds Editor.cameraState
  • Adds smart culling to make panning and zooming more smooth

Styles API (#1580)

(1/2) Timeout collaborator cursors (#1525)

  • Brought back cursor timeouts. Collaborator cursors now disappear after 3 seconds of inactivity.

Remove @tldraw/utils from the docs site (#1596)

  • [docs] Removed an internal utilities package.

(1/2) Cursor Chat - Presence (#1487)

  • [dev] Added support for cursor chat presence.

[docs] Add barebones note about translations (#1593)

  • [docs] Added brief info on how to join as a translations contributor.

[refactor] snapping (#1589)

  • [editor] fix bug in snapping

remove ShapeUtil.transform (#1590)

  • [editor] Remove ShapeUtil.transform

Change app to editor in docs (#1592)

  • [docs] Updated 'App' to 'Editor'.

Make sure loading screens use dark mode user preference. (#1552)

  • Make sure our loading and error screens take dark mode setting into account.

remove ShapeUtil.point (#1591)

  • [editor] Remove ShapeUtil.point

[fix] Remove group shape export backgrounds (#1587)

  • Fix image exports for groups

Add tsdocs to Editor methods (#1581)

  • [dev] Added initial documentation for the Editor class.

add presence to yjs example (#1582)

  • [editor] Add presence to yjs example.

Add optional generic to updateShapes / createShapes (#1579)

  • [editor] adds an optional shape generic to updateShapes and createShapes

fix: properly remove awareness from store (#1565)

  • Add a brief release note for your PR here.

[improvement] Embed shape cleanup (#1569)

  • [editor] Remove unused props for TLEditorShape
  • [editor] Adds canUnmount property to embed definitions

Move the loading of assets to the TldrawEditorWithReadyStore so that all code paths load the assets. (#1561)

  • Fix a problem where assets were not loading in some cases (snapshots).

Add anchor targets to our headings. (#1571)

  • Improve documentation to include anchor targets.

shapes folder, move tools into shape defs (#1574)

n/a

mini defineShape API (#1563)

[dev-facing, notes to come]

Lokalise: Translations update (#1572)

  • Added and updates translations for Italian, Russian, and Ukrainian.

Fix README typo (#1451)

  • None

yjs example (#1560)

  • [editor] Adds yjs example project

ExternalContentManager for handling external content (files, images, etc) (#1550)

  • [editor] add ExternalContentManager for plopping content onto the canvas
  • [editor] remove onCreateAssetFromFile prop
  • [editor] remove onCreateBookmarkFromUrl prop
  • [editor] introduce ExternalContentManager
  • [editor] add cleanup function to onMount

Misc sync fixes (#1555)

  • Fixes a handful of state management bugs that manifest in multiplayer rooms

[Docs] Change some editor properties to methods (#1553)

  • [docs] Fixed some methods that were incorrectly marked as properties.

[Docs] Change some internal methods to public (#1554)

  • [docs] Changed some Editor methods from internal to public.

Use unpkg as a default for serving assets. (#1548)

  • Use unpkg asset hosting as a default.

hoist opacity out of props (#1526)

[internal only for now]

Fix arrows with weird bends crashing (#1540)

  • Fixed a rare crash that could happen when you try to curve an arrow with zero distance.

[feature] add vertical align to note shape (#1539)

  • Adds vertical align prop to note shapes

[fix] Shift key code / nudge (#1537)

  • Fix shift key nudging

scale exported canvases when they reach the browsers max size (#1536)

  • Fix a bug where sometimes exports would fail when they were too big for your browser. Now, they're scaled down to the max supported size.

[fix] control click on mac (#1535)

  • Fix control click to open menu on Mac

Fix being able to undo following (#1531)

  • Fixed a bug where you could undo viewport-following and viewport-unfollowing.

Select locked shapes on long press (#1529)

highlighter fixes (#1530)

[aq bug fixes]

Lokalise: Translations update (#1515)

  • Added and updated community translations for Galician, Italian, Romanian, Russian, Ukrainian, and Traditional Chinese.

Simplify static cursors (#1520)

  • (editor) Simplifies the cursors in our CSS.

Renaming types, shape utils, tools (#1513)

  • Renaming of types, shape utils, tools

tlschema cleanup (#1509)

  • [editor] Remove app.createShapeId
  • [tlschema] Cleans up exports

Rename tlstore to store (#1507)

  • Replace @tldraw/tlstore with @tldraw/store

Rename tlvalidate to validate (#1508)

  • Rename tlvalidate to validate

Filter out unused assets. (#1502)

  • Optimize file size of exported files.

Cleanup @tldraw/ui types / exports (#1504)

  • [editor] clean up / unify types

rename app to editor (#1503)

  • Rename App to Editor and many other things that reference app to editor.

Revert 09c36781 & tweak linting (#1501)

[internal-only]

Add support for locking shapes (#1447)

  • Add support for locking shapes.

[3/3] Highlighter styling (#1490)

Highlighter pen is here! 🎉🎉🎉

[2/3] renderer changes to support "sandwich mode" highlighting (#1418)

[not yet!]

[1/3] initial highlighter shape/tool (#1401)

[internal only change layout ground work for highlighter]

[feature] reduce motion (#1485)

  • [editor] Add reduceMotion user preference
  • Add reduce motion option to preferences

[feature] Easier store persistence API + persistence example (#1480)

  • [tlstore] adds getSnapshot and loadSnapshot

Add DSL to make writing shape-layout test cases much easier (#1413)

[internal only change]

Feature flags rework (#1474)

[internal only change]

[tiny] add isPageId (#1482)

  • [tlschema] Add isPageId

[minor] Mark tlsync-client internal APIs (#1481)

  • Removes internal APIs from @tldraw/tlsync-client

[refactor] update record names (#1473)

  • [editor] rename record types

remove safari special-casing for paste (#1470)

[fixes a regression introduced during this release]

Don't allow g keyboard shortcut in readonly mode, show laser tool in the toolbar (#1459)

  • Disable geo tool shortcut in readonly mode. Show laser on the toolbar.

[mini-feature] Following indicator (#1468)

  • Adds viewport following indicator

[chore] refactor user preferences (#1435)

  • Add a brief release note for your PR here.

Add translations for "Leave shared project" action (#1394)

  • None

update use-gesture (#1453)

  • Updates use-gesture to fix pinch gesture bug on iPad.

Add migration for horizontal alignment (#1443)

  • Add support for legacy alignment options.

Stricter ID types (#1439)

[internal only, covered by #1432 changelog]

[refactor] restore createTLSchema (#1444)

  • [editor] Simplifies custom shape definition
  • [tldraw] Updates props for component to require a TldrawEditorConfig.

Fix cursor shadow getting clipped (#1441)

  • Fixed a bug where custom cursors could have their shadow clipped.

Add SVG cursors for all cursor types (#1416)

  • Added consistent custom cursors.

[refactor] remove createTLSchema (#1440)

  • [tlschema] Removes createTLSchema in favor of TldrawEditorConfig

[refactor] Remove TLShapeDef, getShapeUtilByType. (#1432)

  • [tlschema] Update props of createTLSchema
  • [editor] Update props of TldrawEditorConfig
  • [editor] Remove App.getShapeUtilByType
  • [editor] Update App.getShapeUtil to take a type rather than a shape

[refactor] record migrations (#1430)

  • [tlschema] Improve defineMigrations
  • [editor] Simplify migration definitions

Measure individual words instead of just line breaks for text exports (#1397)

  • Add a brief release note for your PR here.

Update docs links + guides + build (#1422)

  • [docs] Updated guides to get assets from the new tldraw/tldraw repo instead of the old tldraw/tldraw-examples.
  • [docs] Updated an old CodeSandbox link to the new StackBlitz.

Create @tldraw/indices package (#1426)

  • [@tldraw/editor] Remove fractional indices code into @tldraw/indices
  • [@tldraw/indices] Create library for fractional indices code

[feature] Add checkbox to toolbar (#1423)

  • Adds missing checkbox to toolbar.

[improvement] set horizontal position using text alignment (#1419)

  • Geo shapes and sticky notes now position their labels based on their alignment.

[fix] reorder handles in front of selection (#1420)

  • Fix a bug where handles would appear behind selection indicators.

[feature] add laser pointer (#1412)

  • Adds the laser pointer tool.

[firefox] Fix the pointer getting stuck down when you press the control key (#1390)

  • [Firefox] Fixed a bug where the pointer could get stuck down when the control key is held down.

Vertical text alignment for geo shapes (#1414)

  • This adds vertical text alignment property to geo shapes.

[fix] page menu, drag handle css (#1406)

  • Fix styling in the page menu

Switch to new collaborators component (#1405)

  • [Breaking] Removes the old version of LiveCollaborators, replacing it with the new one based on TLInstancePresence

[improvement] refactor paste to support multi-line text (#1398)

  • Improves clipboard logic when pasting text
  • Adds support for pasting multi-line text
  • Adds maximum widths when pasting single-line text
  • Adds support for RTL languages when pasting multi-line or wrapped text
  • Strips leading indentation when pasting text

remove url state, to private (#1402)

  • [editor] remove useUrlState

Don't allow the users to use keyboard shortcuts to select tools in readonly mode. (#1382)

  • Disable keyboard shortcut events for tools in readonly mode. We only allow the select, hand tools, and zoom tool.

[fix] Don't synchronize isReadOnly (#1396)

  • Removes the isReadOnly value from the user_document_settings record type.

fix pasted tabs not getting converted to space (#1388)

  • Fixed a bug where pasted tabs wouldn't get converted into spaces.

Delete an empty text shape when clicking on another text shape. (#1384)

  • Fix a problem with empty text shapes not getting deleted if you clicked on another text shape.

Fix setting the grid mode. (#1386)

  • Fix grid mode toggle.

Update codesandbox + example link (#1368)

  • [docs] Fixed some links to examples.

Fix selection foreground being misaligned (#1380)

  • None (fix for a bug that hasn't released)

Expand selection outline for single-selected draw shape (#1379)

  • Improve selection outlines around horizontal or vertical draw shapes

Add localizations for snapshots links (#1347)

  • Add localization for creating snapshot links.

[fix] pointer location not updating when moving over editing shape (#1378)

  • Fix a bug where the pointer location would not update when moving the pointer over an editing shape.

[perf] deleteShapes (#1373)

  • Perf improvement for deleting shapes in a document with lots of pages.

Neaten up pr template (#1369)

  • None: internal

fix a couple of consistency assumptions (#1365)

  • Fixes a couple of minor consistency bugs affecting shape updating and page deletion in multiplayer contexts.

Disable nightly/on-demand webdriver scripts (#1366)

None

avoid lazy race conditions (#1364)

[internal only]

Adds CI for webdriver tests (#1343)

  • Github action CI workflows added for webdriver tests
  • Refactored e2e test runner

enable eslint for test files (#1363)

internal-only change

[perf] make ensureStoreIsUsable scale better (#1362)

  • Add a brief release note for your PR here.

Export Events stuff (#1360)

  • [ui] export the TLUiEventSource type
  • [ui] export the EventsProviderProps type
  • [ui] export the useEvents hook

presence-related fixes (#1361)

  • Fix a bug where creating a page could throw an error in some multiplayer contexts.

[improvement] rename onEvent to onUiEvent (#1358)

  • [docs] Adds docs for ui events
  • [tldraw] Renames onEvent to onUiEvent

[docs] Update links in docs (#1357)

  • [docs] Update links in docs to point to the tldraw repository rather than tldraw-examples.

[improvement] Ui events followup (#1354)

  • [ui] Adds source to ui events data object
  • [ui] Corrects source for toolbar events
  • [ui] Corrects source for clipboard events
  • [examples] Updates events example

[fix] various text (#1350)

  • Allow leading whitespace

[chore] Bump nanoid (#1349)

  • Remove unused userId and instanceId props from AppOptions

Fix "copy as png" in firefox when dom.events.asyncClipboard.clipboardItem is enabled (#1342)

  • Fix "copy as png" in firefox when dom.events.asyncClipboard.clipboardItem is enabled

Rework the assets package for strategy-specific imports (#1341)

  • [dev] If you're using the @tldraw/assets package, you need to update your code to import { getAssetUrlsByImport } from '@tldraw/assets/imports' instead of import { getBundlerAssetUrls } from '@tldraw/assets

💥 Breaking Change

🚀 Enhancement

🐛 Bug Fix

⚠️ Pushed to main

  • Update publish-new.yml (@steveruizok)
  • Update lerna.json (@steveruizok)
  • Update publish-new.ts (@steveruizok)
  • change App to Editor in docs (@TodePond)
  • rename api.mdx to editor.mdx (@TodePond)
  • remove e2e files (@steveruizok)
  • main: notify huppy after release (@SomeHats)
  • main: exclude @tldraw/assets from vite dep optimization to fix examples links (@SomeHats)
  • @tldraw/assets, @tldraw/editor, @tldraw/file-format, @tldraw/indices, @tldraw/polyfills, @tldraw/primitives, @tldraw/store, @tldraw/tldraw, @tldraw/tlschema, @tldraw/ui, @tldraw/utils, @tldraw/validate

🏠 Internal

📝 Documentation

🧪 Tests

🔩 Dependency Updates

  • [chore] update wdio-vscode-service #1346 (@ds300)
  • @tldraw/editor, @tldraw/state, @tldraw/store, @tldraw/tlschema, @tldraw/ui
  • @tldraw/assets, @tldraw/editor, @tldraw/polyfills, @tldraw/tldraw, @tldraw/ui
  • @tldraw/editor

Authors: 13

tldraw - v2.0.0-alpha.12

Published by SomeHats over 1 year ago