Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.md | 2025-10-02 | 52.2 kB | |
v4.0.3 source code.tar.gz | 2025-10-02 | 76.6 MB | |
v4.0.3 source code.zip | 2025-10-02 | 78.3 MB | |
Totals: 3 Items | 154.9 MB | 18 |
Release Notes
Make sure templates don't use internal functions (#6871)
- Removed imports of internal functions from the agent and workflow starters.
a11y: rename Enable UI labels → Enhanced accessibilty mode (#6797)
- a11y: rename Enable UI labels → Enhanced accessibilty mode
Allow users to set a trackpad/mouse preference to control wheel behaviour (#6755)
- Added preferences to set wheel behaviour for pointer peripherals
Use un-nested clip path when checking overlapping shapes (#6792)
- Fixed a bug with how overlapping shapes are calculated
style panel: followup to fix labels for long translations (#6790)
- style panel: followup to fix labels for long translations
Use pointingPreciseTimeout in DraggingHandle (#6787)
- Fixed a bug where the Arrow tool's
pointingPreciseTimeout
option was not being respected.
style panel: fix certain labels on mobile (#6783)
- style panel: fix certain labels on mobile
Add keyboard shortcut to toggle lock tooltip description (#6757)
- Add
Q
to the tooltip description for the toggle lock icon
a11y: enable hoverable tooltips for accessible mode (#6762)
- a11y: enable hoverable tooltips for accessible mode
a11y: more followup work to [#6750] (#6760)
- a11y: followup tweaks to https://github.com/tldraw/tldraw/pull/6750
a11y: many more little fixes (#6750)
- a11y: many more fixes, including: accessible contextual toolbars, fixing missing labels in various places, more contrast for placeholder text, and adding
lang
for our language menu
a11y: add "selected" to style panel/sidebar for clarity (#6734)
- a11y: add "selected" to style panel/sidebar for clarity
a11y: make menus scrollable when zoomed in (#6740)
- a11y: make menus scrollable when zoomed in
Add maximum file size in description of the file too big toast (#6745)
- Added maximum file size to the description of the file too big toast, when uploading a file.
remove AI module & template (#6748)
replace stopEventPropagation with markEventAsHandled and kill e.isKilled
(#6733)
Fix .png pHYs
's uni
t field being parsed incorrectly (#6735)
- Fixed a bug where our parsing of the
pHYs
's unit field was inconsistent with the png specification
license: have NATIVE_LICENSE use a regex (#6732)
- license: have NATIVE_LICENSE use a regex
license: add new NATIVE_LICENSE type (#6726)
- license: add new NATIVE_LICENSE type
shape ordering: use jittered-fractional-indexing package (#6646)
- shape ordering: use jittered-fractional-indexing package
Agent starter template (#6678)
- Added agent starter template.
Fix arrow export for arrows with labels (#6637)
- Fixed a bug where arrow labels were being cut off in exported images
a11y: followup on minor issues (#6721)
- a11y: fix various
aria-label
issues - a11y: show tooltips immediately when
showUiLabels
is on
prioritised topological sort for migrations (#6702)
- Migrations with explicit
dependsOn
constraints will now be scheduled as close as possible to the things they depend on
automatically pull license from env var (#6711)
- tldraw will automatically find your license key in an environment variable if it's passed through by your bundler. We check
TLDRAW_LICENSE_KEY
,NEXT_PUBLIC_TLDRAW_LICENSE_KEY
,REACT_APP_TLDRAW_LICENSE_KEY
,GATSBY_TLDRAW_LICENSE_KEY
,VITE_TLDRAW_LICENSE_KEY
, andPUBLIC_TLDRAW_LICENSE_KEY
.
Update licensing logic (#6576)
- tldraw editor now requires a license to be used in production. This could be a regular paid license, or an evaluation license.
Fix over-measuring arrow labels, alt take (#6673)
- Fix over-measuring arrow labels, alt take
Fix arrow shape when dragged out of toolbar (#6686)
- Fixed shape of arrow when dragging out of toolbar
events: allow passthrough mouse events only when focused (#6661)
- events: allow passthrough mouse events only when focused
More customizable style panel (#6672)
remove unused deprecated APIs for 4.0 (#6670)
Export doesGeometryOverlapPolygon
(#6679)
- Added the
overlapsPolygon
method to theGeometry2D
class.
a11y: add tooltip for opacity slider and image/text toolbars (#6663)
- a11y: add tooltip for opacity slider and image/text toolbars
Fix internal license logic. (#6665)
- Fix a bug with expired internal license check.
Save and reinstate documentClock properly (#6666)
- Fixes a bug where the documentClock would advance even if no document changes had occurred when loading a new snapshot.
Allow custom shapes to clip their children (#6649)
- Add the ability for custom shapes to clip their children just like the frame shape.
Track which url was opened. (#6654)
- Breaking change:
url
param of theopen-url
event was renamed todestinationUrl
.
Add translation key for rhombus (#6653)
- Added missing translation key for rhombus 2.
a11y: add tooltip for opacity slider (#6647)
- a11y: add tooltip for opacity slider
kbd shortcuts: fix up some badly formatted ones on win/linux (#6638)
- kbd shortcuts: fix up some badly formatted ones on win/linux
Skip padding on image exports (#6636)
- When exporting an annotated image, we no longer add padding unless the annotations stray over the bounds of the image.
Fix mobile touch handling inside editing shape (#6628)
- Fixed a bug that prevented certain pointer events from firing in editable shapes on mobile.
Fix misaligned InFrontOfCanvas ui when canvas is inset (#6626)
- On canvas UI renders in the correct place when the canvas is inset from the tldraw container.
Support sending custom server messages to connected clients (#6614)
- Added support for sending custom messages from
TLSocketRoom
to connected clients
Allow passthrough wheel events when not focused (#6640)
- Items marked with
usePassThroughWheelEvents
no longer block wheel events when the editor is not focused.
make tooltip delays work without editor context (#6623)
- Fix tooltip delays when
TldrawUiTooltip
is used outside of an editor context
Skip font loading when maxFontsToLoadBeforeRender is 0 (#6622)
- Tldraw now completely skips font loading when
maxFontsToLoadBeforeRender
is 0
Revert "Restore DPR constrained width/height on shapes." (#6611)
Fix embeds being positioned incorrectly on chrome when zoom isn't 100%
Memoize asset urls merging (#6605)
- Fixed a bug where the editor would remount in a loop if given custom assetUrls.
fix: Use KeyboardShortcutsDialog override when available, fix TipTap "Header" shortcut label (#6571)
- KeyboardShortcutsDialog override is now respected in more places
- Fix an incorrectly listed keyboard shortcut
increase drag threshold for mobile toolbar (#6596)
- Prevent drag-from-toolbar being triggered accidentally on mobiles
Workflow builder starter kit (#6412)
Accel key to only erase the top shape (#6554)
- Feature: hold command or control while erasing to erase only the first shape that you began erasing. Useful for erasing overlapping shapes!
namespace css variables (#6568)
- BREAKING: all of tldraw's css variables now start with
--tl
. e.g.--color-background
is now--tl-color-background
,--space-4
is now--tl-space-4
, etc. Names which already started with--tl-
remain the same.
Vertical toolbar example (#6532)
Highlight rectangle selection with custom color (#6545)
- Added a new example demonstrating how to dynamically change the selection color based on selected shape types.
<picture>
</picture>
<picture>
</picture>
Drag out of toolbar (again) (#6563)
- Adds the ability to drag shapes from the toolbar onto the canvas.
Rework toolbar classnames (#6526)
Unsaved changes examples (#6533)
- Add an option to
squashRecordDiffs
to allow mutating the first diff instead of creating a new diff.
a11y: add preference to show labels/tooltips (#6444)
- a11y: add preference to show labels/tooltips
Fix edge hitting on arrows (#6525)
- Fixed a bug where hollow shapes could not be bound-to by arrows when overlapping a filled shape.
Fix: change handlers not passed to new room instance (#6549)
- TBD
Add solo sync mode (#6524)
useSync
now only sends presence updates, like mouse and camera positions, when there are more than one unique user in a room.
add EditorAtom helper (#6531)
Permit drag out of toolbar (#4793)
- Adds the ability to drag shapes from the toolbar onto the canvas.
Adds a data-state
attribute with the current state-tree path to tl-container (#6515)
- There's now a
data-state
attribute on.tl-container
which contains the current state tree path. This makes it easier to write styles based on the current interaction state.
add custom shape wrapper component (#6514)
a11y: add rotate kbd shortcut (#6447)
- a11y: add rotate kbd shortcut
arrows: add rich text (#6325)
- Add rich text for arrow labels.
feat: export additional components and methods (#6513)
- Added public exports for
TldrawCropHandles
,ToggleToolLockedButton
,getHitShapeOnCanvasPointerDown
,getAssetInfo
,useUnlockedSelectedShapesCount
, andLockGroup
to support external customization use cases.
add Editor.updatePointer
method (#6494)
Delete page shapes before deleting the page itself (#6333)
- Fixed a bug when deleting pages that prevented the shapes on that page from being garbage collected.
TLSyncRoom optimization (#6488)
- Improve server-side performance when dealing with large rooms in tldraw sync
add isCreatingShape
to ShapeUtil handle drag callbacks (#6493)
More shapeutil callbacks (#6489)
🐛 Bug Fix
- docs: fix logo lol #6805 (@mimecuvalo)
- fix template exports #6804 (@SomeHats)
- docs: fix up broken links in footer and start matching up styling #6796 (@mimecuvalo)
- Docs: unbold the first sentence #6795 (@sylwiavargas)
- Docs: change license page language #6768 (@sylwiavargas @steveruizok @TodePond)
- multiplayer starter kit fix #6786 (@SomeHats)
- Docs path change: releases-versioning -> releases #6782 (@TodePond)
- License change for 4.0 #6780 (@steveruizok)
- Add a menu item for tldraw.dev #6778 (@steveruizok)
- Fix PdfJS worker src resolution in exam marking example #6774 (@github-actions[bot] @max-drake @ds300)
- ENG-3812 Docs: addresses docs feedback #6777 (@sylwiavargas)
- Fix PdfJS worker src resolution #6773 (@ds300)
- Sylwia/starter kit docs #6766 (@sylwiavargas @SomeHats)
- docs: nix mobile menu links #6769 (@mimecuvalo)
- docs: fix up search bar at different sizes #6759 (@mimecuvalo)
- Sync template: make URL copy-pasteable. #6752 (@ds300 @github-actions[bot] @SomeHats)
- docs: nix header #6754 (@mimecuvalo)
- [wip] dotdev split #6311 (@mimecuvalo @MitjaBezensek)
- fix chat snaps #6751 (@SomeHats)
- Rename node definitions from 'Type' to 'Definition' suffix #6746 (@github-actions[bot] @SomeHats)
- Update earthquake node label to 'Earthquake data' #6744 (@github-actions[bot] @SomeHats)
- Add earthquake data node to workflow template #6725 (@SomeHats)
- fix: custom clipping shape example button click handling #6724 (@ds300)
- Agent starter template #6678 (@TodePond @max-drake)
- Async workflows start #6719 (@SomeHats)
- [automated] update i18n strings #6706 (@huppy-bot[bot] @steveruizok @mimecuvalo @github-actions[bot])
- Remove DO and add hosting to branching chat template #6717 (@SomeHats)
- chat template: add uploads, temporarily disable image output #6715 (@SomeHats)
- reduce pg pool idle timeout #6709 (@SomeHats)
- pg connect logs #6708 (@SomeHats)
- pg connect logs #6707 (@SomeHats)
- Hotfix #6705 (@MitjaBezensek)
- Redeploy #6704 (@MitjaBezensek)
- Remove mcp #6703 (@steveruizok)
- correct .env example for chat template #6696 (@SomeHats)
- Chat template starter kit #6619 (@SomeHats)
- [automated] update i18n strings #6677 (@huppy-bot[bot] @steveruizok @github-actions[bot])
- Bump AI template's packages #6681 (@TodePond)
- bump Next.js to 15.4.6 #6662 (@SomeHats)
- Updates language (license page) #6668 (@sylwiavargas)
- cookies: make the dialog not show up before the canvas #6660 (@mimecuvalo)
- [automated] update i18n strings #6648 (@huppy-bot[bot] @mimecuvalo @github-actions[bot])
- examples: dont minify the JS bundle for debuggability in prod #6639 (@mimecuvalo)
- ignore worktrees #6630 (@SomeHats)
- add should build template script #6618 (@SomeHats)
- tiny improve focus example #6608 (@steveruizok)
- Add drag out hands to logged in #6592 (@steveruizok)
- Adjust cookie dialog spacing and positioning #6590 (@steveruizok)
- Add claude code settings #6589 (@steveruizok)
- Clarify third-party backend docs #6570 (@sylwiavargas @steveruizok)
- Initial slides in the Slides Example #6556 (@sylwiavargas)
- Update the tldraw sync server readme #6562 (@sylwiavargas)
- [HOTFIX] Add delete user button to admin dashboard #6561 (@huppy-bot[bot])
- Add delete user button to admin dashboard #6560 (@ds300)
- [automated] update i18n strings #6541 (@huppy-bot[bot] @steveruizok @github-actions[bot])
- changes room name to avoid overcrowding #6548 (@sylwiavargas)
- perf: tweak regression thresholds #6522 (@mimecuvalo)
- [HOTFIX] Remove the key when reporting the error #6523 (@huppy-bot[bot])
- [HOTFIX] Improve multipart upload handling #6520 (@huppy-bot[bot])
- tooling: performance tracker #6484 (@mimecuvalo)
- [automated] update i18n strings #6507 (@huppy-bot[bot] @mimecuvalo @github-actions[bot])
- posthog: update paths #6498 (@mimecuvalo)
tldraw
- Focus mode sdk hotfix #6815 (@ds300)
- style panel: fix certain labels on mobile #6783 (@mimecuvalo)
- Add timeline scrubber example #6718 (@SomeHats)
- [HOTFIX] Revert "a11y: add tooltip for opacity slider" #6658 (@huppy-bot[bot])
- fix extra dropdown slot and bad gradient in style panel #6613 (@SomeHats)
- fix mobile cookie tooltip #6584 (@SomeHats)
- fix shape fills #6587 (@SomeHats)
- Fixes a bunch of drag out of toolbar issues #6585 (@SomeHats)
- no frame color #6583 (@SomeHats)
- Tooltip fixes #6582 (@SomeHats)
@tldraw/editor
,tldraw
- 4.0.1 #6809 (@steveruizok @mimecuvalo @SomeHats)
- [HOTFIX] increase drag threshold for mobile toolbar #6597 (@SomeHats @huppy-bot[bot])
- Workflow builder starter kit #6412 (@SomeHats @mimecuvalo @SergioRiquelmeSanchez)
- Drag out of toolbar (again) #6563 (@SomeHats)
- Revert "Permit drag out of toolbar" #6551 (@steveruizok)
@tldraw/worker-shared
- branching chat refactor #6756 (@SomeHats)
- bump cloudflare-workers-unfurl #6655 (@ds300)
@tldraw/editor
- Update Watermark.tsx #6776 (@steveruizok)
- license: track license id #6747 (@mimecuvalo)
- docs improvements #6687 (@steveruizok)
- Revert "Fix dragging within multiple editors" #6599 (@SomeHats)
create-tldraw
- Update
npm create tldraw
with new starter kits #6749 (@SomeHats) - Add README for npm create tldraw CLI tool #6698 (@SomeHats)
- fix packaging & publishing for
npm create tldraw
#6506 (@SomeHats) @tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
- Revert "update year from 2024 to 2025 on licenses and readmes" #6723 (@SomeHats)
- update year from 2024 to 2025 on licenses and readmes #6700 (@SomeHats)
@tldraw/sync-core
- TLSyncClient potential bugfix #6652 (@ds300)
- [HOTFIX] Fix: change handlers not passed to new room instance #6550 (@huppy-bot[bot])
@tldraw/assets
,create-tldraw
,@tldraw/dotcom-shared
,@tldraw/editor
,@tldraw/tldraw
,@tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/sync-core
,@tldraw/sync
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
,@tldraw/worker-shared
- Add more context, maybe #6600 (@steveruizok)
- Migrate from jest to vitest #6593 (@SomeHats)
- Add CONTEXT.md files, others #6588 (@steveruizok)
@tldraw/state
- Docs for tldraw state #6573 (@steveruizok)
⚠️ Pushed to v4.0.x
- Deploy from hotfix (c0efe5b9a76eff179c313c703d7cc6348a7f0fc7) at 2025-09-08T12:41:48Z (@web-flow)
- Deploy from hotfix (b924a019eece17276c1343533c1992bff82d6509) at 2025-09-08T10:56:27Z (@web-flow)
- Deploy from hotfix (ff9b529e84a7f67c82e575b227ff286232caca94) at 2025-09-08T07:46:47Z (@web-flow)
- Deploy from hotfix (0b76ee7687242b46f401b69fa7343bee992169a1) at 2025-08-08T12:17:56Z (@web-flow)
- Deploy from hotfix (8c7a47d3d46c18ecd1cfb521425b7a2a1f47b34d) at 2025-07-30T14:56:43Z (@web-flow)
- Deploy from hotfix (5f24c66fed6421debfd81ac9bbaca67e011701f8) at 2025-07-30T14:01:08Z (@web-flow)
@tldraw/assets
,create-tldraw
,@tldraw/editor
,@tldraw/tldraw
,@tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/sync-core
,@tldraw/sync
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
- v4.0.0 (@huppy-bot[bot])
- Deploy from main (eb9a487b3293ada6808a0dca5924d3640aae3bbf) at 2025-09-03T14:45:33Z (huppy+steveruizok@tldraw.com)
- Deploy from main (800e55564c4a59f28b583eeba69d864c245851b3) at 2025-07-30T09:48:00Z (huppy+mimecuvalo@tldraw.com)
create-tldraw
,@tldraw/dotcom-shared
,@tldraw/editor
,@tldraw/store
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
,@tldraw/worker-shared
- Deploy from main (31c6f67b492ad8ab811977d0280061b06a697900) at 2025-09-18T14:17:37Z (huppy+SomeHats@tldraw.com)
tldraw
- Deploy from hotfix (11c14a37777fb8bf623131c46b0bd060b3c4601a) at 2025-08-27T13:41:52Z (@web-flow)
@tldraw/assets
,create-tldraw
,@tldraw/editor
,@tldraw/tldraw
,@tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/sync-core
,@tldraw/sync
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
,@tldraw/worker-shared
- Deploy from main (d8ae9a640492b56a2d344ba65fa2605b5522de52) at 2025-08-27T11:20:51Z (huppy+mimecuvalo@tldraw.com)
@tldraw/assets
,create-tldraw
,@tldraw/dotcom-shared
,@tldraw/editor
,@tldraw/tldraw
,@tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/sync-core
,@tldraw/sync
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
,@tldraw/worker-shared
- Deploy from main (dbaaa1b0049c11c242d26fe16f5c82d6e2922b3a) at 2025-08-20T10:13:25Z (huppy+AniKrisn@tldraw.com)
- Deploy from main (1b74ce1c7283a8480debcc6718b9dba2c8fc4e7a) at 2025-08-14T10:06:23Z (huppy+TodePond@tldraw.com)
@tldraw/editor
,tldraw
- Deploy from hotfix (c06a9901cfc27a9decdcc8a50f30c7969c70ed75) at 2025-08-15T10:31:52Z (@web-flow)
@tldraw/assets
,create-tldraw
,@tldraw/dotcom-shared
,@tldraw/editor
,@tldraw/tldraw
,@tldraw/state-react
,@tldraw/state
,@tldraw/store
,@tldraw/sync-core
,@tldraw/sync
,tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
- Deploy from main (a03de714c746d6425679de4bb36376594d670b51) at 2025-08-06T14:17:12Z (huppy+ds300@tldraw.com)
@tldraw/sync-core
- Deploy from hotfix (0733849b4f4a3a24c9396e2bb7fa91302ce37267) at 2025-08-06T08:37:04Z (@web-flow)
🐛 Bug Fixes
- Fix blog redirects #6794 (@MitjaBezensek)
- [Agent template] Fix overscroll navback and webkit scorllbar css #6770 (@max-drake)
- Small agent fixes #6758 (@max-drake)
- Fix dotcom e2e tests #6675 (@MitjaBezensek)
- Improve page tracking via the analytics script #6601 (@MitjaBezensek)
- Avoid incorrect session attribution. #6544 (@MitjaBezensek)
- fix: add missing GA4 domains to CSP for non-EU regions #6534 (@steveruizok)
- Fix hotfixing #6502 (@MitjaBezensek)
@tldraw/editor
,tldraw
- Use un-nested clip path when checking overlapping shapes #6792 (@kostyafarber)
- a11y: more followup work to [#6750] #6760 (@mimecuvalo)
- Fix arrow export for arrows with labels #6637 (@ds300)
- Fix misaligned InFrontOfCanvas ui when canvas is inset #6626 (@SomeHats)
- increase drag threshold for mobile toolbar #6596 (@SomeHats)
- Fix edge hitting on arrows #6525 (@steveruizok @SomeHats)
- Delete page shapes before deleting the page itself #6333 (@ds300)
tldraw
- style panel: followup to fix labels for long translations #6790 (@mimecuvalo)
- Use pointingPreciseTimeout in DraggingHandle #6787 (@ds300 @SomeHats)
- a11y: enable hoverable tooltips for accessible mode #6762 (@mimecuvalo)
- a11y: many more little fixes #6750 (@mimecuvalo)
- a11y: make menus scrollable when zoomed in #6740 (@mimecuvalo)
- a11y: followup on minor issues #6721 (@mimecuvalo)
- Fix panning perf. #6683 (@MitjaBezensek)
- a11y: add tooltip for opacity slider and image/text toolbars #6663 (@mimecuvalo)
- Revert "a11y: add tooltip for opacity slider" #6657 (@SomeHats)
- Track which url was opened. #6654 (@MitjaBezensek)
- Add translation key for rhombus #6653 (@TodePond)
- kbd shortcuts: fix up some badly formatted ones on win/linux #6638 (@mimecuvalo)
- make tooltip delays work without editor context #6623 (@SomeHats)
- Memoize asset urls merging #6605 (@ds300)
- fix: Use KeyboardShortcutsDialog override when available, fix TipTap "Header" shortcut label #6571 (@cubeghost)
- Accel key to only erase the top shape #6554 (@steveruizok)
- Remove delay from info tooltip on mobile #6591 (@TodePond)
- Fix shapes sizes when dragged out of the toolbar #6586 (@steveruizok @SomeHats)
- [Fix] select all on text when dragging out of toolbar #6578 (@steveruizok)
@tldraw/utils
- Fix .png
pHYs
'suni
t field being parsed incorrectly #6735 (@max-drake) @tldraw/editor
- Fix: bug when pasting in readonly mode #6729 (@steveruizok)
- Fix internal license logic. #6665 (@MitjaBezensek)
- Fix mobile touch handling inside editing shape #6628 (@ds300)
- Allow passthrough wheel events when not focused #6640 (@steveruizok)
- Revert "Restore DPR constrained width/height on shapes." #6611 (@SomeHats)
- Fix dragging within multiple editors #6543 (@TodePond)
@tldraw/sync-core
- Save and reinstate documentClock properly #6666 (@ds300)
- Fix: change handlers not passed to new room instance #6549 (@mootari)
💄 Product Improvements
- Add claude 4.5 sonnet to agent #6852 (@max-drake)
- Improve .dev sitemap #6789 (@MitjaBezensek)
- Latest changes #6753 (@MitjaBezensek)
- Use not_planned as the reason for closing stale issues #6694 (@MitjaBezensek)
- Improve cookie consent dialog #6579 (@MitjaBezensek)
- Add consent form for logged out users. #6559 (@MitjaBezensek)
- Stop tracking app events in GA, manually track page views. #6575 (@MitjaBezensek)
- Simplify CTA #6553 (@steveruizok)
- Remove the key when reporting the error #6521 (@MitjaBezensek)
- Improve multipart upload handling #6519 (@MitjaBezensek)
- Chunked persist. #6510 (@MitjaBezensek)
- Notify users when their rooms start to get big #6492 (@MitjaBezensek)
- Remove alarms for persisting. #6503 (@MitjaBezensek)
@tldraw/editor
,tldraw
- Allow users to set a trackpad/mouse preference to control wheel behaviour #6755 (@kostyafarber)
- Skip padding on image exports #6636 (@SomeHats)
- Permit drag out of toolbar #4793 (@steveruizok @MitjaBezensek @SomeHats @mimecuvalo)
tldraw
- Add keyboard shortcut to toggle lock tooltip description #6757 (@kostyafarber)
- a11y: add "selected" to style panel/sidebar for clarity #6734 (@mimecuvalo)
- Add maximum file size in description of the file too big toast #6745 (@kostyafarber)
- Fix over-measuring arrow labels, alt take #6673 (@mimecuvalo @steveruizok)
- Fix arrow shape when dragged out of toolbar #6686 (@steveruizok)
- a11y: add tooltip for opacity slider #6647 (@mimecuvalo)
- a11y: add rotate kbd shortcut #6447 (@mimecuvalo)
@tldraw/editor
- license: have NATIVE_LICENSE use a regex #6732 (@mimecuvalo)
- license: add new NATIVE_LICENSE type #6726 (@mimecuvalo)
- automatically pull license from env var #6711 (@SomeHats)
- events: allow passthrough mouse events only when focused #6661 (@mimecuvalo)
- Skip font loading when maxFontsToLoadBeforeRender is 0 #6622 (@SomeHats)
tldraw
,@tldraw/tlschema
,@tldraw/utils
,@tldraw/validate
- shape ordering: use jittered-fractional-indexing package #6646 (@mimecuvalo)
@tldraw/store
- prioritised topological sort for migrations #6702 (@SomeHats)
create-tldraw
,@tldraw/editor
- Branching chat #6701 (@steveruizok)
@tldraw/editor
,tldraw
,@tldraw/tlschema
- Flatten color theme object #6466 (@steveruizok)
@tldraw/dotcom-shared
,@tldraw/editor
,tldraw
- a11y: add preference to show labels/tooltips #6444 (@mimecuvalo @steveruizok @SomeHats @MitjaBezensek @github-actions[bot] @ds300 @nakul-bigpi)
@tldraw/sync-core
,@tldraw/sync
- Add solo sync mode #6524 (@ds300)
@tldraw/dotcom-shared
- Track room load duration #6530 (@MitjaBezensek)
- Improve room history logic. #6517 (@MitjaBezensek)
@tldraw/store
,@tldraw/sync-core
,@tldraw/utils
- TLSyncRoom optimization #6488 (@ds300)
🎉 New Features
- Custom people menu example #6598 (@max-drake @github-actions[bot])
- Track new file creation #6629 (@MitjaBezensek)
- Exam marking example #6546 (@max-drake)
- Add
zoomToBounds
example #6555 (@max-drake @TodePond) - Highlight rectangle selection with custom color #6545 (@cursoragent @SomeHats)
@tldraw/editor
- Update licensing logic #6576 (@MitjaBezensek)
@tldraw/sync-core
,@tldraw/sync
- Support sending custom server messages to connected clients #6614 (@mootari)
tldraw
- Add lasso select tool example #6564 (@max-drake)
@tldraw/editor
,@tldraw/sync-core
,tldraw
,@tldraw/tlschema
- arrows: add rich text #6325 (@mimecuvalo @huppy-bot[bot] @steveruizok)
🛠️ API Changes
@tldraw/editor
,@tldraw/store
- Make sure templates don't use internal functions #6871 (@TodePond)
@tldraw/dotcom-shared
,@tldraw/editor
,tldraw
- a11y: rename Enable UI labels → Enhanced accessibilty mode #6797 (@mimecuvalo)
tldraw
- publish arrow target state #6788 (@SomeHats)
- Allow finer control over when arrows are precise vs exact #6781 (@SomeHats)
- More customizable style panel #6672 (@SomeHats @steveruizok)
- Expose
notifyIfFileNotAllowed
helper #6625 (@SomeHats) - Vertical toolbar example #6532 (@SomeHats)
- Rework toolbar classnames #6526 (@SomeHats)
- feat: export additional components and methods #6513 (@nakul-bigpi)
@tldraw/editor
,tldraw
- scope event killing to editor #6779 (@SomeHats @TodePond)
- replace stopEventPropagation with markEventAsHandled and kill
e.isKilled
#6733 (@SomeHats) - Dynamically sized shape example #6699 (@SomeHats)
- Allow custom shapes to clip their children #6649 (@ds300)
- namespace css variables #6568 (@SomeHats)
- add
isCreatingShape
to ShapeUtil handle drag callbacks #6493 (@SomeHats) - More shapeutil callbacks #6489 (@SomeHats)
create-tldraw
- remove AI module & template #6748 (@SomeHats)
@tldraw/editor
,@tldraw/store
,tldraw
,@tldraw/utils
- remove unused deprecated APIs for 4.0 #6670 (@SomeHats @ds300)
@tldraw/editor
- Export
doesGeometryOverlapPolygon
#6679 (@TodePond) - add editor.toImageDataUrl method #6624 (@SomeHats)
- add EditorAtom helper #6531 (@SomeHats)
- Adds a
data-state
attribute with the current state-tree path to tl-container #6515 (@SomeHats) - add custom shape wrapper component #6514 (@SomeHats)
- add
Editor.updatePointer
method #6494 (@SomeHats) @tldraw/store
- Unsaved changes examples #6533 (@steveruizok @ds300)
🏠 Internal
- Update root CONTEXT.md with comprehensive repository details #6712 (@steveruizok)
- Add Claude Code GitHub Workflow #6693 (@steveruizok)
- Add Claude Code GitHub Workflow #6692 (@steveruizok)
Authors: 23
- @github-actions[bot]
- @huppy-bot[bot]
- alex (@SomeHats)
- alex baldwin (@cubeghost)
- AniKrisn (huppy+AniKrisn@tldraw.com)
- Cursor Agent (@cursoragent)
- David Sheldrick (@ds300)
- ds300 (huppy+ds300@tldraw.com)
- Fabian Iwand (@mootari)
- GitHub Web Flow (@web-flow)
- Kostya Farber (@kostyafarber)
- Lu Wilson (@TodePond)
- Max Drake (@max-drake)
- Mime Čuvalo (@mimecuvalo)
- mimecuvalo (huppy+mimecuvalo@tldraw.com)
- Mitja Bezenšek (@MitjaBezensek)
- Nakul Sharma (@nakul-bigpi)
- SergioRiquelmeSanchez (@SergioRiquelmeSanchez)
- SomeHats (huppy+SomeHats@tldraw.com)
- Steve Ruiz (@steveruizok)
- steveruizok (huppy+steveruizok@tldraw.com)
- Sylwia Vargas (@sylwiavargas)
- TodePond (huppy+TodePond@tldraw.com)