excalidraw

Virtual whiteboard for sketching hand-drawn like diagrams

MIT License

Downloads
357K
Stars
74.3K
Committers
294

Bot releases are visible (Hide)

excalidraw - v0.17.3 (2024-02-09) Latest Release

Published by ad1992 8 months ago

Fixes

  • Keep customData when converting to ExcalidrawElement. #7656

  • Umd build for browser since it was breaking in v0.17.0 #7349. Also make sure that when using Vite, the process.env.IS_PREACT is set as "true" (string) and not a boolean.

define: {
  "process.env.IS_PREACT": JSON.stringify("true"),
}
  • Disable caching bounds for arrow labels #7343

  • Bounds cached prematurely resulting in incorrectly rendered labels #7339

excalidraw - v0.17.0 (2023-11-14)

Published by ad1992 11 months ago

v0.17.0 (2023-11-14)

Features

  • Added support for disabling image tool (also disabling image insertion in general, though keeps support for importing from .excalidraw files) #6320.

    For disabling image you need to set 👇

    UIOptions.tools = {
      image: false
    }
    
  • Support excalidrawAPI prop for accessing the Excalidraw API #7251.

  • Export getCommonBounds helper from the package #7247.

  • Support frames via programmatic API #7205.

  • Export elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox helpers for filtering/checking if elements within bounds. #6727

  • Regenerate ids by default when using transform api and also update bindings by 0.5px to avoid possible overlapping #7195

  • Add onChange, onPointerDown, onPointerUp api subscribers #7154.

  • Support props.locked for setActiveTool #7153.

  • Add selected prop for MainMenu.Item and MainMenu.ItemCustom components to indicate active state. #7078

Fixes

  • Double image dialog on image insertion #7152.

Breaking Changes

  • The Ref support has been removed in v0.17.0 so if you are using refs, please update the integration to use the excalidrawAPI #7251.

  • Additionally ready and readyPromise from the API have been discontinued. These APIs were found to be superfluous, and as part of the effort to streamline the APIs and maintain simplicity, they were removed in version v0.17.0 #7251.

  • useDevice hook's return value was changed to differentiate between editor and viewport breakpoints. #7243

Build

  • Support Preact #7255. The host needs to set process.env.IS_PREACT to true

    When using vite or any build tools, you will have to make sure the process is accessible as we are accessing process.env.IS_PREACT to decide whether to use the preact build.

    Since Vite removes env variables by default, you can update the Vite config to ensure it's available 👇

    define: {
      "process.env.IS_PREACT": process.env.IS_PREACT,
    },
    

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Allow D&D dice app domain for embeds #7263

  • Remove full screen shortcut #7222

  • Make adaptive-roughness less aggressive #7250

  • Render frames on export #7210

  • Support mermaid flowchart and sequence diagrams to excalidraw diagrams 🥳 #6920

  • Support frames via programmatic API #7205

  • Make clipboard more robust and reintroduce contextmenu actions #7198

  • Support giphy.com embed domain #7192

  • Renderer tweaks #6698

  • Closing of "Save to.." Dialog on Save To Disk #7168

  • Added Copy/Paste from Google Docs #7136

  • Remove bound-arrows from frames #7157

  • New dark mode theme & light theme tweaks #7104

  • Better laser cursor for dark mode #7132

  • Laser pointer improvements #7128

  • Initial Laser Pointer MVP #6739

  • Export iconFillColor() #6996

  • Element alignments - snapping #6256

Fixes

  • Image insertion bugs #7278

  • ExportToSvg to honor frameRendering also for name not only for frame itself #7270

  • Can't toggle penMode off due to missing typecheck in togglePenMode #7273

  • Replace hard coded font family with const value in addFrameLabelsAsTextElements #7269

  • Perf issue when ungrouping elements within frame #7265

  • Fixes the shortcut collision between "toggleHandTool" and "distributeHorizontally" #7189

  • Allow pointer events when editing a linear element #7238

  • Make modal use viewport breakpoints #7246

  • Align input :hover/:focus with spec #7225

  • Dialog remounting on className updates #7224

  • Don't update label position when dragging labelled arrows #6891

  • Frame add/remove/z-index ordering changes #7194

  • Element relative position when dragging multiple elements on grid #7107

  • Freedraw non-solid bg hitbox not working #7193

  • Actions panel ux improvement #6850

  • Better fill rendering with latest RoughJS #7031

  • Fix for Strange Symbol Appearing on Canvas after Deleting Grouped Graphics (Issue #7116) #7170

  • Attempt to fix flake in wysiwyg tests #7173

  • Ensure ClipboardItem created in the same tick to fix safari #7066

  • Wysiwyg left in undefined state on reload #7123

  • Ensure relative z-index of elements added to frame is retained #7134

  • Memoize static canvas on props.renderConfig #7131

  • Regression from #6739 preventing redirect link in view mode #7120

  • Update links to excalidraw-app #7072

  • Ensure we do not stop laser update prematurely #7100

  • Remove invisible elements safely #7083

  • Icon size in manifest #7073

  • Elements being dropped/duplicated when added to frame #7057

  • Frame name not editable on dbl-click #7037

  • Polyfill Element.replaceChildren #7034

Refactor

  • DRY out tool typing #7086

  • Refactor event globals to differentiate from lastPointerUp #7084

  • DRY out and simplify setting active tool from toolbar #7079

Performance

  • Improve element in frame check #7124

excalidraw - v0.16.1 (2023-09-21)

Published by ad1992 about 1 year ago

0.16.1 (2023-09-21)

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Fixes

  • More eye-droper fixes #7019

Refactor

  • Move excalidraw-app outside src #6987

excalidraw - v0.16.0 (2023-09-19)

Published by ad1992 about 1 year ago

0.16.0 (2023-09-19)

Features

  • Support creating containers, linear elements, text containers, labelled arrows and arrow bindings programatically #6546

  • Added props.validateEmbeddable to customize embeddable src url validation. #6691

  • Add support for opts.fitToViewport and opts.viewportZoomFactor in the ExcalidrawAPI.scrollToContent API. #6581.

  • Sidebar component now supports tabs — for more detailed description of new behavior and breaking changes, see the linked PR. #6213

  • Exposed DefaultSidebar component to allow modifying the default sidebar, such as adding custom tabs to it. #6213

    BREAKING CHANGES

    • props.renderSidebar is removed in favor of rendering as children.
    • appState.isSidebarDocked replaced with appState.defaultSidebarDockedPreference with slightly different semantics, and relating only to the default sidebar. You need to handle docked state for your custom sidebars yourself.
    • Sidebar props.dockable is removed. To indicate dockability, supply props.onDock() alongside setting props.docked.
    • Sidebar.Header is no longer rendered by default. You need to render it yourself.
    • props.onClose replaced with props.onStateChange.
    • restore()/restoreAppState() now retains appState.openSidebar regardless of docked state.

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Properly sanitize element link urls. #6728.

  • allow avif, jfif, webp, bmp, ico image types #6500

  • Zen-mode/go-to-plus button style tweaks #7006

  • Holding down CMD/CTRL will disable snap to grid when grid is active #6983

  • Update logo #6979

  • Export changeProperty() and getFormValue(). #6957

  • Partition main canvas vertically #6759

  • Add support for simplePDF in Web-Embeds #6810

  • Introducing Web-Embeds (alias iframe element)#6691

  • Add support for val.town embeds #6821

  • Render bold lines in grid #6779

  • Adds support for stackblitz.com embeds #6813

  • Cache most of element selection #6747

  • Support customizing what parts of frames are rendered #6752

  • Make appState.selectedElementIds more stable #6745

  • Overwrite confirmation dialogs #6658

  • Simple analitycs #6683

  • Introduce frames #6123

  • Add canvas-roundrect-polyfill package #6675

  • Polyfill CanvasRenderingContext2D.roundRect #6673

  • Disable collab feature when running in iframe #6646

  • Assign random user name when not set #6663

  • Redesigned collab cursors #6659

  • Eye dropper #6615

  • Redesign of Live Collaboration dialog #6635

  • Recover scrolled position after Library re-opening #6624

  • Clearing library cache #6621

  • Update design of ImageExportDialog #6614

  • Add flipping for multiple elements #5578

  • Color picker redesign #6216

  • Add "unlock all elements" to canvas contextMenu #5894

  • Library sidebar design tweaks #6582

  • Add Trans component for interpolating JSX in translations #6534

  • Testing simple analytics and fathom analytics for better privacy of the users #6529

  • Retain seed on shift-paste #6509

  • Allow avif, jfif, webp, bmp, ico image types (#6500

Fixes

  • Improperly disabling UI pointer-events on canvas interaction #7005

  • Several eyeDropper fixes #7002

  • IsBindableElement to affirm frames #6900

  • Use device.isMobile for sidebar trigger label breakpoint #6994

  • Export to plus url #6980

  • Z-index inconsistencies during addition / deletion in frames #6914

  • Update size-limit so react is not installed as dependency #6964

  • Stale labeled arrow bounds cache after editing the label #6893

  • Canvas flickering due to resetting canvas on skipped frames #6960

  • Grid jittery after partition PR #6935

  • Regression in indexing when adding elements to frame #6904

  • Stabilize selectedElementIds when box selecting #6912

  • Resetting deleted elements on duplication #6906

  • Make canvas compos memoize appState on props they declare #6897

  • Scope --color-selection retrieval to given instance #6886

  • Webpack config exclude statement to system agnostic #6857

  • Remove embeddable from generic elements #6853

  • Resizing arrow labels #6789

  • Eye-dropper not working with app offset correctly on non-1 dPR #6835

  • Add self destroying service-worker.js to migrate everyone from CRA to Vite #6833

  • Forgotten REACT_APP env variables #6834

  • Refresh sw when browser refreshed #6824

  • Adding to selection via shift box-select #6815

  • Prevent binding focus NaN value #6803

  • Use pull request in semantic workflow for better security #6799

  • Don't show canvasBackground label when UIOptions.canvasActions.changeViewBackgroundColor is false #6781

  • Use subdirectory for @excalidraw/excalidraw size limit #6787

  • Use actual dock state to not close docked library on insert #6766

  • UI disappears when pressing the eyedropper shortcut on mobile #6725

  • Elements in non-existing frame getting removed #6708

  • Scrollbars renders but disable #6706

  • Typo in chart.ts #6696

  • Do not bind text to container using text tool when it has text already #6694

  • Don't allow binding text to images #6693

  • Updated link for documentation page under help section #6654

  • Collab username style fixes #6668

  • Bound arrows not updated when rotating multiple elements #6662

  • Delete setCursor when resize #6660

  • Creating text while color picker open #6651

  • Cleanup textWysiwyg and getAdjustedDimensions #6520

  • Eye dropper not accounting for offsets #6640

  • Color picker input closing problem #6599

  • Export dialog shortcut toggles console on firefox #6620

  • Add react v17 useTransition polyfill #6618

  • Library dropdown visibility issue for mobile #6613

  • withInternalFallback leaking state in multi-instance scenarios #6602

  • Language list containing duplicate en lang #6583

  • Garbled text displayed on avatars #6575

  • Assign the original text to text editor only during init #6580

  • I18n: Apply Trans component to publish library dialogue #6564

  • Fix brave error i18n string and remove unused #6561

  • Revert add version tags to Docker build #6540

  • Don't refresh dimensions for text containers on font load #6523

  • Cleanup getMaxContainerHeight and getMaxContainerWidth #6519

  • Cleanup redrawTextBoundingBox #6518

  • Text jumps when editing on Android Chrome #6503

Styles

  • Removes extra spaces #6558

  • Fix font family inconsistencies #6501

Refactor

  • Factor out shape generation from renderElement.ts pt 2 #6878

  • Add typeScript support to enforce valid translation keys #6776

  • Simplify ImageExportDialog #6578

Performance

  • Limiting the suggested binding to fix performance issue #6877

  • Memoize rendering of library #6622

  • Improve rendering performance for Library #6587

  • Use UIAppState where possible to reduce UI rerenders #6560

Build

  • Increase limit for bundle by 1kb #6880

  • Update to node 18 in docker #6822

  • Migrate to Vite 🚀 #6818

  • Migrate to Vite 🚀 #6713

  • Increase limit to 290 kB for prod bundle #6809

  • Add version tags to Docker build #6508


excalidraw - v0.15.0 (2023-04-18)

Published by ad1992 over 1 year ago

Features

  • ExcalidrawAPI.scrolToContent has new opts object allowing you to fit viewport to content, and animate the scrolling. #6319

  • Expose useI18n() hook return an object containing t() i18n helper and current langCode. You can use this in components you render as <Excalidraw> children to render any of our i18n locale strings. #6224

  • restoreElements API now takes an optional parameter opts which currently supports the below attributes

{ refreshDimensions?: boolean, repairBindings?: boolean }

The same opts param has been added to restore API as well.

For more details refer to the docs

BREAKING CHANGE

  • The optional parameter refreshDimensions in restoreElements has been removed and can be enabled via opts

Fixes

  • Exporting labelled arrows via export utils #6443

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Constrain export dialog preview size #6475

  • Zigzag fill easter egg #6439

  • Add container to multiple text elements #6428

  • Starting migration from GA to Matomo for better privacy #6398

  • Add line height attribute to text element #6360

  • Add thai lang support #6314

  • Create bound container from text #6301

  • Improve text measurements in bound containers #6187

  • Bind text to container if double clicked on filled shape or stroke #6250

  • Make repair and refreshDimensions configurable in restoreElements #6238

  • Show error message when not connected to internet while collabo… #6165

  • Shortcut for clearCanvas confirmDialog #6114

  • Disable canvas smoothing (antialiasing) for right-angled elements #6186Co-authored-by: Ignacio Cuadra [email protected]

Fixes

  • Center align text when wrapped in container via context menu #6480

  • Restore original container height when unbinding text which was binded via context menu #6444

  • Mark more props as optional for element #6448

  • Improperly cache-busting on canvas scale instead of zoom #6473

  • Incorrectly duplicating items on paste/library insert #6467

  • Library ids cross-contamination on multiple insert #6466

  • Color picker keyboard handling not working #6464

  • Abort freedraw line if second touch is detected #6440

  • Utils leaking Scene state #6461

  • Split "Edit selected shape" shortcut #6457

  • Center align text when bind to container via context menu #6451

  • Update coords when text unbinded from its container #6445

  • Autoredirect to plus in prod only #6446

  • Fixing popover overflow on small screen #6433

  • Introduce baseline to fix the layout shift when switching to text editor #6397

  • Don't refresh dimensions for deleted text elements #6438

  • Element vanishes when zoomed in #6417

  • Don't jump text to end when out of viewport in safari #6416

  • GetDefaultLineHeight should return default font family line height for unknown font #6399

  • Revert use ideographic textBaseline to improve layout shift when editing text" #6400

  • Call stack size exceeded when paste large text #6373 (#6396)

  • Use ideographic textBaseline to improve layout shift when editing text #6384

  • Chrome crashing when embedding scene on chrome arm #6383

  • Division by zero in findFocusPointForEllipse leads to infinite loop in wrapText freezing Excalidraw #6377

  • Containerizing text incorrectly updates arrow bindings #6369

  • Ensure export preview is centered #6337

  • Hide text align for labelled arrows #6339

  • Refresh dimensions when elements loaded from shareable link and blob #6333

  • Show error message when measureText API breaks in brave #6336

  • Add an offset of 0.5px for text editor in containers #6328

  • Move utility types out of .d.ts file to fix exported declaration files #6315

  • More jotai scopes missing #6313

  • Provide HelpButton title prop #6209

  • Respect text align when wrapping in a container #6310

  • Compute bounding box correctly for text element when multiple element resizing #6307

  • Use jotai scope for editor-specific atoms #6308

  • Consider arrow for bound text element #6297

  • Text never goes beyond max width for unbound text elements #6288

  • Svg text baseline #6285

  • Compute container height from bound text correctly #6273

  • Fit mobile toolbar and make scrollable #6270

  • Indenting via tab clashing with IME compositor #6258

  • Improve text wrapping inside rhombus and more fixes #6265

  • Improve text wrapping in ellipse and alignment #6172

  • Don't allow blank space in collab name #6211

  • Docker build architecture:linux/amd64 error occur on linux/arm64 instance #6197

  • Sort bound text elements to fix text duplication z-index error #5130

  • Hide welcome screen on mobile once user interacts #6185

  • Edit link in docs #6182

Refactor

  • Inline SingleLibraryItem into PublishLibrary #6462

  • Make the example React app reusable without duplication #6188

Performance

  • Break early if the line width <= max width of the container #6347

Build

  • Move TS and types to devDependencies #6346
excalidraw - v0.14.2

Published by ad1992 over 1 year ago

0.14.2 (2023-02-01)

Features

  • Welcome screen no longer renders by default, and you need to render it yourself. UIOptions.welcomeScreen option is now deprecated. #6117
  • MainMenu, MainMenu.Item, and MainMenu.ItemLink components now all support onSelect(event: Event): void callback. If you call event.preventDefault(), it will prevent the menu from closing when an item is selected (clicked on). #6152

Fixes

  • declare css variable for font in excalidraw so its available in host #6160

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Add hand/panning tool #6141

  • Show copy-as-png export button on firefox and show steps how to enable it #6125

Fixes

  • Horizontal padding when aligning bound text containers #6180

  • Make tunnels work in multi-instance scenarios #6178

  • Add 1px width to the container to calculate more accurately #6174

  • Quick typo fix #6167

  • Set the width correctly using measureText in editor #6162

  • 🐛 broken emojis when wrap text #6153

  • Button background and svg sizes #6155

Styles

  • Change in ExportButton style #6147 (#6148)

Build

  • Temporarily disable pre-commit #6132

excalidraw - v0.14.1

Published by ad1992 almost 2 years ago

0.14.1 (2023-01-16)

Fixes

excalidraw - v0.14.0 (2023-01-13)

Published by ad1992 almost 2 years ago

0.14.0 (2023-01-13)

Features

  • Support customization for the editor welcome screen #6048.

  • Expose component API for the Excalidraw main menu #6034, You can read more about its usage here

  • Support customization for the Excalidraw main menu #6034.

  • Footer is now rendered as child component instead of passed as a render prop #5970.

  • Any top-level children passed to the <Excalidraw/> component that do not belong to one of the officially supported Excalidraw children components are now rendered directly inside the Excalidraw container (previously, they weren't rendered at all) #6096.

  • Expose LiveCollaborationTrigger component. Replaces props.onCollabButtonClick #6104.

BREAKING CHANGES

  • props.onCollabButtonClick is now removed. You need to render the main menu item yourself, and optionally also render the <LiveCollaborationTrigger> component using renderTopRightUI prop if you want to retain the canvas button at top-right.
  • The prop renderFooter is now removed in favor of rendering as a child component.

Excalidraw schema

  • Merged appState.currentItemStrokeSharpness and appState.currentItemLinearStrokeSharpness into appState.currentItemRoundness. Renamed changeSharpness action to changeRoundness. Excalidraw element's strokeSharpness was changed to roundness. Check the PR for types and more details #5553.

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Generic button export #6092

  • Scroll using PageUp and PageDown #6038

  • Support shrinking text containers to original height when text removed #6025

  • Move contextMenu into the component tree and control via appState #6021

  • Allow readonly actions to be used in viewMode #5982

  • Support labels for arrow 🔥 #5723

  • Don't add midpoint until dragged beyond a threshold #5927

  • Changed text copy/paste behaviour #5786

  • Reintroduce x shortcut for freedraw #5840

  • Tweak toolbar shortcuts & remove library shortcut #5832

  • Clean unused images only after 24hrs (local-only) #5839

  • Refetch errored/pending images on collab room init load #5833

  • Stop deleting whole line when no point select in line editor #5676

  • Editor redesign 🔥 #5780

Fixes

  • Mobile tools positioning #6107

  • Renamed folder MainMenu->main-menu and support rest props #6103

  • Use position absolute for mobile misc tools #6099

  • React.memo resolvers not accounting for all props #6042

  • Image horizontal flip fix + improved tests #5799

  • Png-exporting does not preserve angles correctly for flipped images #6085

  • Stale appState of MainMenu defaultItems rendered from Actions #6074

  • HelpDialog #6072

  • Show error message on collab save failure #6063

  • Remove ga from docker build #6059

  • Use displayName since name gets stripped off when uglifying/minifiyng in production #6036

  • Remove background from wysiwyg when editing arrow label #6033

  • Use canvas measureText to calculate width in measureText #6030

  • Restoring deleted bindings #6029

  • ColorPicker getColor #5949

  • Don't push whitespace to next line when exceeding max width during wrapping and make sure to use same width of text editor on DOM when measuring dimensions #5996

  • Showing grabbing cursor when holding spacebar #6015

  • Resize sometimes throwing on missing null-checks #6013

  • PWA not working after CRA@5 update #6012

  • Not properly restoring element stroke and bg colors #6002

  • Avatar outline on safari & center #5997

  • Chart pasting not working due to removing tab characters #5987

  • Apply the right type of roundness when pasting styles #5979

  • Remove editor onpaste handler #5971

  • Remove blank space #5950

  • Galego and Kurdî missing in languages plus two locale typos #5954
    excalidraw-excalidraw-v0.14.0.tgz

  • ExcalidrawArrowElement rather than ExcalidrawArrowEleement #5955

  • RenderFooter styling #5962

  • Repair element bindings on restore #5956

  • Don't allow whitespaces for bound text #5939

  • Bindings do not survive history serialization #5942

  • Dedupe boundElement ids when container duplicated with alt+drag #5938

  • Scale font correctly when using shift #5935

  • Always bind to container selected by user #5880

  • Fonts not rendered on init if loadingdone not fired #5923

  • Stop replacing del word with Delete #5897

  • Remove legacy React.render() from the editor #5893

  • Allow adding text via enter only for text containers #5891

  • Stop font loadingdone loop when rendering element SVGs #5883

  • Refresh text dimensions only after font load done #5878

  • Correctly paste contents parsed by JSON.parse() as text. #5868

  • SVG element attributes in icons.tsx #5871

  • Merge existing text with new when pasted #5856

  • Disable FAST_REFRESH to fix live reload #5852

  • Paste clipboard contents into unbound text elements #5849

  • Compute dimensions of container correctly when text pasted on container #5845

  • Line editor points rendering below elements #5781

  • Syncing 1-point lines to remote clients #5677

  • Incorrectly selecting linear elements on creation while tool-locked #5785

  • Corrected typo in toggle theme shortcut #5813

  • Hide canvas-modifying UI in view mode #5815

  • Fix vertical/horizntal centering icons #5812

  • Consistent use of ZOOM_STEP #5801

  • Multiple elements resizing regressions #5586

  • Changelog typo #5795

Refactor

  • Remove unnecessary code #5933

Build

  • Move release scripts to use release branch #5958

  • Stops ignoring .env files from docker context so env variables get set during react app build. #5809


excalidraw - 0.13.0 (2022-10-27)

Published by ad1992 almost 2 years ago

0.13.0 (2022-10-27)

Excalidraw API

Features

Breaking Changes

  • props.UIOptions.canvasActions.theme is now renamed to props.UIOptions.canvasActions.toggleTheme #5660.
  • setToastMessage API is now renamed to setToast API and the function signature is also updated #5427. You can also pass duration and closable attributes along with message.

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Render library into Sidebar on mobile #5774

  • Additional drag and drop image format support (webp, bmp, ico) #5749

  • Enter and Exit line editor via context menu #5719

  • Further reduce darkmode init flash #5701

  • Support segment midpoints in line editor #5641

  • Added exportPadding to PNG (blob) export in @excalidraw/utils #5626

  • Introduce ExcalidrawElements and ExcalidrawAppState provider #5463

  • Enable midpoint inside linear element editor #5564

  • Show a mid point for linear elements #5534

  • Lock angle when editing linear elements with shift pressed #5527

  • Redesign linear elements 🎉 #5501

  • Cursor alignment when creating linear elements with shift pressed #5518

  • Shift-clamp when creating multi-point lines/arrows #5500

  • Cursor alignment when creating generic elements #5516

  • Make context menu scrollable #4030

Fixes

  • Ungroup short cut key #5779

  • Replaced KeyboardEvent.code with KeyboardEvent.key for all letters #5523

  • Free draw flip not scaling correctly #5752

  • Wait for window focus until prompting for library install #5751

  • Update perfect freehand library to fix extra dot #5727

  • RestoreElementWithProperties drops "parent" property #5742

  • Horizontal text alignment for bound text when resizing #5721

  • Set the dimensions of bound text correctly #5710

  • Image-mirroring in export preview and in exported svg #5700

  • Double state update incorrectly resetting state #5704

  • Remove no longer used code related to collab room loading #5699

  • Revert webpack deduping to fix @next runtime #5695

  • Move to release notes for v0.9.0 and after #5686

  • Zen-mode exit button not working #5682

  • Buttons jump around on the mobile menu #5658

  • #5622 - prevent session theme reset during collaboration #5640

  • Library actions inside the sidebar #5638

  • Don't render library menu twice for mobile #5636

  • Reintroduce help dialog button #5631

  • Add display name to components so it doesn't show as anonymous #5616

  • Improve solveQuadratic when a = 0 #5618

  • Add random tiny offsets to avoid linear elements from being clipped #5615

  • Crash when adding a new point in the line editor #5602 #5606

  • Allow box selection of points when inside editor #5594

  • Remove unnecessary conditions in pointerup for linear elements #5575

  • Check if hitting link in handleSelectionOnPointerDown #5589

  • Points not being normalized on single-elem resize #5581

  • Deselect linear element when clicked inside bounding box outside editor #5579

  • Resize multiple elements from center #5560

  • Call static methods via class instead of instance in linearElementEditor #5561

  • Show bounding box for 3 or more linear point elements #5554

  • Cleanup the condition for dragging elements #5555

  • Shareable links being merged with current scene data #5547

  • Scene lookup failing when looking up by id #5542

  • Remove rounding to fix jitter when shift-editing #5543

  • Line deselected when shift-dragging point outside editor #5540

  • Flip linear elements after redesign #5538

  • Disable locking aspect ratio for box-selection #5525

  • Add title attribute to the modal close button #5521

  • Context menu positioning when component has offsets #5520

  • Resolve paths in prebuild.js script #5498

  • Use flushSync when moving line editor since we need to read previous value after setting state #5508

  • UseLayout effect cleanup in dev mode for charts #5505

  • Revert browser toast for high/low zoom #5495

  • Fixing push to DockerHub #5468

  • Incorrectly rendering freedraw elements #5481

  • Generate types when building example #5480

  • Use React.FC as react-dom is not able to infer types of Modal #5479

  • Missing translation for "Scale" to Export Dialog #5456

  • Add display name for Excalidraw component so it doesn't show as anonymous #5464

  • Account for safe area for floating buttons on mobile #5420

  • Attribute warnings in comment svg example #5465

  • Check for ctrl key when wheel event triggered to only disable zooming #5459

  • Disable render throttling by default & during resize #5451

  • Attach wheel event to exscalidraw container only #5443

  • Show toast when browser zoom is not 100% #5304

  • Prevent browser zoom inside Excalidraw #5426

  • Typo in changelog #5425

Refactor

  • Create a util to compute container dimensions for bound text container #5708

  • Reuse common ui dialogs and message for mobile and LayerUI #5611

  • Stats component #5610

  • Move footer to its own component #5609

  • Remove unused attribute hasHitElementInside from pointerDownState #5591

  • Cleanup renderScene #5573

  • Rename docs to dev-docs #5487

  • Remove unnecessary if condition for linear element onKeyDown #5486

  • Improve typing & check #5415

  • Don't pass zenModeEnable, viewModeEnabled and toggleZenMode props to LayerUI #5444

Build

  • Add missing dependencies: pica, lodash #5656

  • Move dotenv to dev deps #5472


excalidraw - v0.12.0 (2022-07-06)

Published by ad1992 over 2 years ago

0.12.0 (2022-07-07)

Excalidraw API

Features

  • loadLibraryFromBlob now takes an additional parameter defaultStatus which sets the default status of library item if not present, defaults to unpublished #5067.

  • Add UIOptions.dockedSidebarBreakpoint to customize at which point to break from the docked sidebar #5274.

  • Added support for supplying user id in the Collaborator object (see collaborators in updateScene()), which will be used to deduplicate users when rendering collaborator avatar list. Cursors will still be rendered for every user. #5309

  • Export API to set and reset mouse cursor on the canvas #5215.

  • Export sceneCoordsToViewportCoords and viewportCoordsToSceneCoords utilities #5187.

  • Added useHandleLibrary hook to automatically handle importing of libraries when #addLibrary URL hash key is present, and potentially for initializing library as well #5115.

    Also added parseLibraryTokensFromUrl to help in manually importing library from URL if desired.

    BREAKING CHANGE
    • Libraries are no longer automatically initialized from URL when #addLibrary hash key is present. Host apps now need to handle this themselves with the help of either of the above APIs (useHandleLibrary is recommended).
  • Added updateLibrary API to update (replace/merge) the library #5115.

    BREAKING CHANGE
    • updateScene API no longer supports passing libraryItems. Instead, use the updateLibrary API.
  • Add support for integrating custom elements #5164.

    • Add onPointerDown callback which gets triggered on pointer down events.
    • Add onScrollChange callback which gets triggered when scrolling the canvas.
    • Add API setActiveTool which host can call to set the active tool.
  • Exported loadSceneOrLibraryFromBlob function #5057.

  • Export MIME_TYPES supported by Excalidraw #5135.

  • Support avatarUrl for collaborators. Now onwards host can pass avatarUrl to render the customized avatar for collaborators #5114, renamed in #5177.

  • Support libraryItems argument in initialData.libraryItems and updateScene({ libraryItems }) to be a Promise resolving to LibraryItems, and support functional update of libraryItems in updateScene({ libraryItems }). #5101.

  • Expose util mergeLibraryItems #5101.

  • Expose util exportToClipboard which allows to copy the scene contents to clipboard as svg, png or json #5103.

  • Expose window.EXCALIDRAW_EXPORT_SOURCE which you can use to overwrite the source field in exported data #5095.

  • The exportToBlob utility now supports the exportEmbedScene option when generating a png image #5047.

  • Exported restoreLibraryItems API #4995.

Fixes

  • Allow returning null in renderFooter prop #5282.

  • Transpile browser-fs-access dependency so that its for await syntax doesn't force es2018 requirement onto dependent projects #5041.

  • Use window.EXCALIDRAW_ASSET_PATH for fonts when exporting to svg #5065.

  • Library menu now properly rerenders if open when library is updated using updateScene({ libraryItems }) #4995.

Refactor

  • Rename appState.elementLocked to appState.activeTool.locked #4983.
  • Expose serializeLibraryAsJSON helper that we use when saving Excalidraw Library to a file.
BREAKING CHANGE

You will need to pass activeTool.locked instead of elementType from now onwards in appState.

BREAKING CHANGE

You will need to pass activeTool instead of elementType from now onwards in appState

Build

  • Use only named exports #5045.

BREAKING CHANGE

You will need to import the named export from now onwards to use the component

Using bundler 👇

import { Excalidraw } from "@excalidraw/excalidraw";

In Browser 👇

React.createElement(ExcalidrawLib.Excalidraw, opts);

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Throttle scene rendering to animation framerate #5422

  • Make toast closable and allow custom duration #5308

  • Collab component state handling rewrite & fixes #5046

  • Support debugging PWA in dev #4853

  • Redirect vscode.excalidraw.com to vscode marketplace #5285

  • Go-to-excalidrawplus button #5202

  • Autoredirect to Excalidraw+ if special cookie is present #5183

  • Support resubmitting published library items #5174

  • Support adding multiple library items on canvas #5116

  • Support customType in activeTool #5144

  • Stop event propagation when key handled #5091

  • Rewrite library state management & related refactor #5067

  • Delay initial loading message & tweak design #5049

  • Reconcile when saving to firebase #4991

  • Hide trash button during collaboration #5037

  • Refactor local persistence & fix race condition on SW reload #5032

  • Element locking #4964

  • Copy to clipboard all text nodes as text #5013

  • Create and expose serializeLibraryAsJSON #5009

  • Hide penMode button on reload if not enabled #4992

  • Eraser toggle to switch back to the previous tool #4981

  • Save penDetected and penMode, and detect pen already on ToolButton click #4955

  • Support binding text to container via context menu #4935

  • Map shortcut O to ellipse and Add eraser shortcut E #4930

  • Update eraser cursor #4922

  • Add Eraser 🎉 #4887

  • Added optional REACT_APP_WS_SERVER_URL for forks usecases #4889

  • Rewrite collab server connecting #4881

  • Support vertical text align for bound containers #4852

  • Support custom colors 🎉 #4843

  • Support Links in Exported SVG #4791

  • Scale font size when bound text containers resized with shift pressed #4828

Fixes

  • Autorelease job name #5412

  • Action name for autorelease #5411

  • Typecast file to fix the build #5410

  • File handle not persisted when importing excalidraw files #5372

  • Library not scrollable when no published items installed #5352

  • Focus traps inside popovers #5317

  • Unable to use cmd/ctrl-delete/backspace in inputs #5348

  • Delay loading until language imported #5344

  • Command to trigger release #5347

  • Remove unnecessary options passed to language detector #5336

  • Stale appState.pendingImageElement #5322

  • Non-letter shortcuts being swallowed by color picker #5316

  • Bind text to correct container when nested #5307

  • Copy bound text style when copying element having bound text #5305

  • Copy arrow head when using copy styles #5303

  • Unsafely accessing draggingElement #5216

  • Library load button does not work #5205

  • Do not deselect when not zooming using touchscreen pinch #5181

  • Wheel zoom normalization #5165

  • Hide sidebar when custom tool active #5179

  • Don't save deleted ExcalidrawElements to Firebase #5108

  • Eraser removed deleted elements #5155

  • Handle ColorPicker parentSelector being undefined #5152

  • Library multiselect not accounting for published state #5132

  • Chart display fix #5154

  • Update opacity of bound text when opacity of container updated #5142

  • Jumping of text when typing single line in bound text #5139

  • Remove opacity scroll wheel interaction #5111

  • Propagate keydown events from excalidraw-wysiwyg inputs #5099

  • Don't bind text to container if double clicked else instead of center #5105

  • ToolIcon height not using rem #5092

  • Excalidraw named export type #5078

  • BoundElementIds when arrows bound to elements are deleted #5077

  • Don't merge libraryItems on updateScene #5076

  • SVG metadata extraction regex on multiline elements #5074

  • Eraser cursor showing on theme change when not using eraser #4990

  • Update storage.rules #5020

  • Add image button not working on iPad #5038

  • Ensure svg image dimensions are always set #5044

  • Pinch zoom in view mode #5001

  • Select whole group on righclick & few lock-related fixes #5022

  • Export serializeLibraryAsJSON from the package #5017

  • Support copying PNG to clipboard on Safari #3746

  • More copyText fixes #5016

  • Copy to clipboard all text nodes as text #5014

  • Update cursorButton once freedraw is released #4996

  • Decouple actionFinalize and actionErase #4984

  • Using stale state when switching tools #4989

  • UpdateWysiwygStyle updatedElement is undefined TypeError #4980

  • Adding check for link length to prevent early return #4982

  • Show link icon for bound text containers #4960

  • Cancel erase elements on pointer up if eraser is not active on pointer up #4956

  • Restore original opacities when alt pressed while erasing #4954

  • Don't bind text to container if already present #4946

  • Erase all elements which are hit with single point click #4934

  • Add multiElement-edit finalize action to Desktop (currently only visible in Mobile view) #4764

  • Hide eraser in view mode in desktop #4929

  • Undo when erasing elements by clicking #4921

  • Undo when erasing #4900

  • Incorrectly erasing on mobile #4899

  • Don't crash on drop highlighted text onto canvas #4890

  • Paste styles shortcut #4886

  • Freedraw element's background fill color missing from SVG when exporting with package API exportToSvg() #4871

  • Improve pointer syncing performance #4883

  • Collab room initialization #4882

  • Ensure verticalAlign properties not shown when no element selected #4860

  • Binding text to non-bindable containers and not always preferring selection #4655

  • Don't show align icons for single bound container element #4846

  • Redraw text bounding box when pasting styles #4845

  • Restore cursor position after bound text container value updated #4836

  • Support resizing multiple bound text containers #4824

  • Also check overflowY: overlay in detectScroll #4806

  • Stuck resizing when resizing bound text container very fast beyond threshold #4804

Refactor

  • Don't pass array to handleBindTextResize #4826

Build

  • Extract all i18n files into locales folder #5419

  • Automate release step fully #5414

  • Use next and preview tags instead of separate packages for next and preview release #5346

  • Support runtime React Jsx in @excalidraw/utils #4866

  • Release @excalidraw/utils 0.1.1 #4862

  • Remove build packages workflow #4835

excalidraw - v0.11.0 (2022-02-17)

Published by ad1992 over 2 years ago

Excalidraw API

Features

  • Add onLinkOpen prop which will be triggered when clicked on element hyperlink if present #4694.

  • Support updating library using updateScene API #4546.

  • Introduced primary colors to the app. The colors can be overriden. Check readme on how to do so #4387.

  • exportToBlob now automatically sets appState.exportBackground to true if exporting to image/jpeg MIME type (to ensure that alpha channel is not compressed to black color) #4342.

    BREAKING CHANGE

    Remove getElementMap util #4306.

  • Changes to exportToCanvas util function #4321:

    • Add maxWidthOrHeight?: number attribute.
    • scale returned from getDimensions() is now optional (default to 1).
  • Image support added for host PR

    General notes:

    • File data are encoded as DataURLs (base64) for portability reasons.

    ExcalidrawAPI:

    • added getFiles() to get current BinaryFiles (Record<FileId, BinaryFileData>). It may contain files that aren't referenced by any element, so if you're persisting the files to a storage, you should compare them against stored elements.

    Excalidraw app props:

    • added generateIdForFile(file: File) optional prop so you can generate your own ids for added files.
    • onChange(elements, appState, files) prop callback is now passed BinaryFiles as third argument.
    • onPaste(data, event) data prop should contain data.files (BinaryFiles) if the elements pasted are referencing new files.
    • initialData object now supports additional files (BinaryFiles) attribute.

    Other notes:

    • .excalidraw files may now contain top-level files key in format of Record<FileId, BinaryFileData> when exporting any (image) elements.
    • Changes were made to various export utilities exported from the package so that they take files, you can refer to the docs for the same.
  • Export isLinearElement and getNonDeletedElements #4072.

  • Support renderTopRightUI in mobile UI #4065.

  • Export THEME constant from the package so host can use this when passing the theme #4055.

    BREAKING CHANGE

    The Appearance type is now removed and renamed to Theme so Theme type needs to be used.

Fixes

  • Reset unmounted state on the component once component mounts to fix the mounting/unmounting repeatedly when used with useEffect #4682.
  • Panning the canvas using mousewheel-drag and space-drag now prevents the browser from scrolling the container/page #4489.
  • Scope drag and drop events to Excalidraw container to prevent overriding host application drag and drop events #4445.

Build

 @excalibot trigger release

#4750.

  • Added an example to test and develop the package locally using yarn start #4488

  • Remove file-loader so font assets are not duplicated by webpack and use webpack asset modules for font generation #4380.

  • We're now compiling to es2017 target. Notably, async/await is not compiled down to generators. #4341.


Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Show group/group and link action in mobile #4795

  • Support background fill for freedraw shapes #4610

  • Keep selected tool on canvas reset #4728

  • Make whole element clickable in view mode when it has hyperlink #4735

  • Allow any precision when zooming #4730

  • Throttle pointermove events per framerate #4727

  • Support hyperlinks 🔥 #4620

  • Added penMode for palm rejection #4657

  • Support unbinding bound text #4686

  • Sync local storage state across tabs when out of sync #4545

  • Support contextMenuLabel to be of function type to support dynmaic labels #4654

  • Support decreasing/increasing fontSize via keyboard #4553

  • Link to new LP for excalidraw plus #4549

  • Update stroke color of bounded text along with container #4541

  • Hints and shortcuts help around deep selection #4502

  • Support updating text properties by clicking on container #4499

  • Bind text to shapes when pressing enter and support sticky notes 🎉 #4343

  • Change boundElementIdsboundElements #4404

  • Support selecting multiple points when editing line #4373

  • Horizontally center toolbar menu commit link

  • Add support for rounded corners in diamond #4369

  • Allow zooming up to 3000% #4358

  • Stop discarding precision when rendering #4357

  • Support Image binding #4347

  • Add element.updated #4070

  • Compress shareLink data when uploading to json server #4225

  • Supply version param when installing libraries #4305

  • Log FS abortError to console #4279

  • Add validation for website and remove validation for library item name #4269

  • Allow publishing libraries from UI #4115

  • Create confirm dialog to use instead of window.confirm #4256

  • Allow letters in IDs for storing files in backend #4224

  • Remove support for V1 unencrypted backend #4189

  • Use separate backend for local storage #4187

  • Add hint around canvas panning #4159

  • Stop using production services for development #4113

  • Add triangle arrowhead #4024

  • Add rewrite to webex landing page #4102

  • Switch collab server #4092

  • Use dialog component for clear canvas instead of window confirm #4075

Fixes

  • Rename --color-primary-chubb to --color-primary-contrast-offset and fallback to primary color if not present #4803

  • Add commits directly pushed to master in changelog #4798

  • Don't bump element version when adding files data #4794

  • Mobile link click #4742

  • ContextMenu timer & pointers not correctly reset on iOS #4765

  • Use absolute coords when rendering link popover #4753

  • Changing font size when text is not selected or edited #4751

  • Disable contextmenu on non-secondary pen events or touch #4675

  • Mobile context menu won't show on long press #4741

  • Do not open links twice #4738

  • Make link icon clickable in mobile #4736

  • Apple Pen missing strokes #4705

  • Freedraw slow movement jittery lines #4726

  • Disable three finger pinch zoom in penMode #4725

  • Remove click listener for opening popup #4700

  • Link popup position not accounting for offsets #4695

  • PenMode darkmode style #4692

  • Typing _+ in wysiwyg not working #4681

  • Keyboard-zooming in wysiwyg should zoom canvas #4676

  • SceneCoordsToViewportCoords, jumping text when there is an offset #4413 (#4630)

  • Right-click object menu displays partially off-screen #4572 (#4631)

  • Support collaboration in bound text #4573

  • Cmd/ctrl native browser behavior blocked in inputs #4589

  • Use cached width when calculating min width during resize #4585

  • Support collaboration in bounded text #4580

  • Port for collab server and update docs #4569

  • Don't mutate the bounded text if not updated when submitted #4543

  • Prevent canvas drag while editing text #4552

  • Support shift+P for freedraw #4550

  • Prefer spreadsheet data over image #4533

  • Show text properties button states correctly for bounded text #4542

  • Rotate bounded text when container is rotated before typing #4535

  • Undo should work when selecting bounded textr #4537

  • Reduce padding to 5px for bounded text #4530

  • Bound text doesn't inherit container #4521

  • Text wrapping with grid #4505 (#4506)

  • Check if process is defined before using so it works in browser #4497

  • Pending review fixes for sticky notes #4493

  • Pasted elements except binded text once paste action is complete #4472

  • Don't select binded text when ungrouping #4470

  • Set height correctly when text properties updated while editing in container until first submit #4469

  • Align and distribute binded text in container and cleanup #4468

  • Move binded text when moving container using keyboard #4466

  • Support dragging binded text in container selected in a group #4462

  • Vertically align single line when deleting text in bounded container #4460

  • Update height correctly when updating text properties in binded text #4459

  • Align library item previews to center #4447

  • Vertically center align text when text deleted #4457

  • Vertically center the first line as user starts typing in container #4454

  • Switch cursor to center of container when adding text when dimensions are too small #4452

  • Vertically center align the bounded text correctly when zoomed #4444

  • Support updating stroke color for text by typing in color picker input #4415

  • Bound text not atomic with container when changing z-index #4414

  • Update viewport coords correctly when editing text #4416

  • Use word-break break-word only and update text editor height only when binded to container #4410

  • Husky not able to execute pre-commit on windows #4370

  • Make firebase config parsing not fail on undefined env #4381

  • Adding to library via contextmenu when no image is selected #4356

  • Export scale quality regression #4316

  • Remove 100% height from tooltip container to fix layout issues #3980

  • Inline ENV variables when building excalidraw package #4311

  • SVG export in dark mode with embedded bitmap image #4285

  • New FS API not working on Linux #4280

  • Url -> URL for consistency #4277

  • Prevent adding images to library via contextMenu #4264

  • Account for libraries v2 when prompting #4263

  • Skia rendering issues #4200

  • Ellipse roughness when 0 #4194

  • Proper string for invalid SVG #4191

  • Images not initialized correctly #4157

  • Image-related fixes #4147

  • Rewrite collab element reconciliation to fix z-index issues #4076

  • Redirect excalidraw.com/about to for-webex.excalidraw.com #4104

  • Redirect to webex LP instead of rewrite to fix SW #4103

  • Clear image/shape cache of affected elements when adding files #4089

  • Clear LibraryUnit DOM on unmount #4084

  • Pasting images on firefox #4085

Refactor

  • Simplify zoom by removing zoom.translation #4477

  • Deduplicate encryption helpers #4146

Performance

  • Cache approx line height in textwysiwg #4651

Build

  • Rename release command to 'release package' #4783

  • Deploy excalidraw package example #4762

  • Allow package.json changes when autoreleasing next #4068

excalidraw - v0.10.0

Published by ad1992 about 3 years ago

Excalidraw API

Fixes

  • onPaste prop should return false to prevent the native excalidraw paste action #3974.

    BREAKING CHANGE

    • Earlier the paste action was prevented when the prop onPaste returned true, but now it should return false to prevent the paste action. This was done to make it semantically more correct and intuitive.

Build

  • Enable jsx transform in webpack #4049

Docs

  • Correct exportToBackend in README to onExportToBackend #3952

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Improve freedraw shape #3984

  • Make color ARIA labels better #3871

  • Add origin trial tokens #3853

  • Re-order zoom buttons #3837

  • Add undo/redo buttons & tweak footer #3832

  • Resave to png/svg with metadata if you loaded your scene from a png/svg file #3645

Fixes

  • Abstract and fix legacy fs #4032

  • Context menu positioning #4025

  • Added alert for bad encryption key #3998

  • OnPaste should return false to prevent paste action #3974

  • Help-icon now visible on Safari #3939

  • Permanent zoom mode #3931

  • Undo/redo buttons gap in Safari #3836

  • Prevent gradual canvas misalignment #3833

  • Color picker shortcuts not working when elements selected #3817

excalidraw - v0.9.0 (2021-07-10)

Published by ad1992 over 3 years ago

Excalidraw API

Features

  • restore(data, localAppState, localElements) and restoreElements(elements, localElements) now take localElements argument which will be used to ensure existing elements' versions are used and incremented. This fixes an issue where importing the same file would resolve to elements with older versions, potentially causing issues when reconciling #3797.

    BREAKING CHANGE

    • localElements argument is mandatory (can be null/undefined) if using TypeScript.
  • Support appState.exportEmbedScene attribute in exportToSvg which allows to embed the scene data #3777.

    BREAKING CHANGE

    • The attribute metadata is now removed as metadata was only used to embed scene data which is now supported with the appState.exportEmbedScene attribute.
    • exportToSvg now resolves to a promise which resolves to svg of the exported drawing.
  • Expose loadLibraryFromBlob, loadFromBlob, and getFreeDrawSvgPath #3764.

  • Expose FONT_FAMILY so that consumer can use when passing initialData.appState.currentItemFontFamily #3710.

  • Added prop autoFocus to focus the excalidraw component on page load when enabled, defaults to false #3691.

    Note: Earlier Excalidraw component was focussed by default on page load, you need to enable autoFocus prop to retain the same behaviour.

  • Added prop UIOptions.canvasActions.export.renderCustomUI to support Custom UI rendering inside export dialog #3666.

  • Added prop UIOptions.canvasActions.saveAsImage to show/hide the Save as image button in the canvas actions. Defauls to true hence the Save as Image button is rendered #3662.

  • Export dialog can be customised with UiOptions.canvasActions.export #3658.

    Also, UIOptions is now memoized to avoid unnecessary rerenders.

    BREAKING CHANGE

    • UIOptions.canvasActions.saveAsScene is now renamed to UiOptions.canvasActions.export.saveFileToDisk. Defaults to true hence the save file to disk button is rendered inside the export dialog.
    • exportToBackend is now renamed to UIOptions.canvasActions.export.exportToBackend. If this prop is not passed, the shareable-link button will not be rendered, same as before.

Fixes

  • Use excalidraw Id in elements so every element has unique id #3696.

Refactor

  • BREAKING CHANGE

    • Rename UIOptions.canvasActions.saveScene to UIOptions.canvasActions.saveToActiveFile#3657.
    • Removed shouldAddWatermark: boolean attribute from options for export APIs #3639.
    • Removed appState.shouldAddWatermark so in case you were passing shouldAddWatermark in initialData.AppState it will not work anymore.

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Switch to selection tool on library item insert #3773

  • Show active file name when saving to current file #3733

  • Add hint around text editing #3708

  • Change library icon to be more clear #3583

  • Pass current theme when installing libraries #3701

  • Update virgil font #3692

  • Support exporting json to excalidraw plus #3678

  • Save exportScale in AppState #3580

  • Add shortcuts for stroke and background color picker #3318

  • Exporting redesign #3613

  • Auto-position tooltip and suport overflowing container #3631

  • Auto release @excalidraw/excalidraw-next on every change #3614

  • Allow inner-drag-selecting with cmd/ctrl #3603

Fixes

  • view mode cursor adjustments #3809.

  • Pass next release to updatePackageVersion & replace ## unreleased with new version #3806

  • Include deleted elements when passing to restore #3802

  • Import React before using jsx #3804

  • Ensure s and g shortcuts work on no selection #3800

  • Keep binding for attached arrows after changing text #3754

  • Deselect elements on viewMode toggle #3741

  • Allow pointer events for disable zen mode button #3743

  • Use rgba instead of shorthand alpha #3688

  • Color pickers not opening on mobile #3676

  • On contextMenu, use selected element regardless of z-index #3668

  • SelectedGroupIds not being stored in history #3630

  • Overscroll on touch devices #3663

  • Small UI issues around image export dialog #3642

  • Normalize linear element points on restore #3633

  • Disable pointer-events on footer-center container #3629

Refactor

  • Delete React SyntheticEvent persist #3700

  • Code clean up #3681

Performance

  • Improve arrow head sizing #3480

Build

  • Add release script to update relevant files and commit for next release #3805

  • Add script to update changelog before a stable release #3784

  • Add script to update readme before stable release #3781