2 hours ago
zip.js

v2.19.0

What's Changed in v2.19.0

Bug fixes

  • A Unicode Path extra field (0x7075) no longer bypasses filenameValidation: the name of a valid field replaced the decoded central directory name after that name had been validated, so an entry named safe.txt in its record and ../evil.txt in the field was listed as ../evil.txt at the "strict" and "balanced" levels. The validation and normalizeFilename now run on the final name, so such an entry fails getEntries() with ERR_UNSAFE_FILENAME carrying the name of the field, normalizeFilename receives that name and can repair it, and "tolerant" still keeps it. Conversely, an unsafe record name overridden by a safe field is now accepted, since the name reported is the safe one; rawFilename still holds the bytes of the record
  • With unixExtraFieldType: "unix", the Info-ZIP Unix type 2 extra field (0x7855) is written as Info-ZIP's zip writes it and its extrafld.txt specifies: the 2-byte uid and gid in the local file header, and the tag with a size of 0 in the central directory record, where the 4 bytes used to be repeated. As for the archives Info-ZIP writes, entry.uid and entry.gid of such an entry are undefined after getEntries() and filled in once the entry data has been read: code reading them right after getEntries() on an archive written this way by 2.19.0 has to read the data first, or read entry.localDirectory.uid after getData(), or write the entries with the default "infozip" type. Archives written with "unix" by earlier versions keep reporting the ids at getEntries(), since their central directory copy holds them
  • ZipFS exports keep re-emitting imported ids as a New Unix extra field (0x7875), which stores them in both records, unless unixExtraFieldType is set on the export
  • When a record carries both a New Unix extra field (0x7875) and a type 2 field (0x7855) holding ids, the ids come from the New Unix field, to which Info-ZIP gives precedence and which is not limited to 16 bits; the type 2 ids used to win, so a uid of 70000 next to its truncated 4464 was reported as 4464. extraFieldUnix.uid and extraFieldUnix.gid still report the type 2 values
  • ZipWriter#add() no longer accesses the readable getter of a reader that implements readUint8Array(), e.g. a BlobReader, a Uint8ArrayReader or an HttpRangeReader: the check for a usable reader read readable first, which on these classes creates a new stream on each access, and that stream pulled its first chunk before being discarded, one wasted range request per add() for a remote reader

Behaviour changes

  • The default chunkSize is 256 KiB instead of 64 KiB. Every stage of the pipeline of an entry holds up to one chunk and the data crosses the boundary of a web worker one chunk per message, so the change buys fewer messages for more memory per entry in progress. Where it shows: concurrent add() on Bun 1.4.2 takes 0.24 s instead of 1.20 s, since its native CompressionStream leaves the JavaScript thread only for writes larger than 128 KB, and the worker paths gain in proportion to the number of messages saved. What it costs, measured in isolation on Node.js in-process: about 20 MB more peak memory on a 256 MB stream and on a 20 MB text entry. Applications on memory-tight targets, e.g. browser extensions or mobile pages with many entries in flight, can keep the previous value with configure({ chunkSize: 64 * 1024 }). BENCHMARKS.md was re-run on the new default
  • The streams of an entry are never transferred to a web worker any more: the data always crosses the boundary chunk by chunk, which was never slower and is faster in the browsers, measured with a warmed worker on a 32 MiB deflated entry: Safari 27 reads in 38 ms against 80 with the transfer and writes in 93 against 156, Firefox 156 reads in 75 to 80 ms against 86 to 89 and writes in 32 to 36 against 79 to 87, Chrome 153 writes in 69 against 85 and reads in the same time, Deno is on par, and Bun does not support transferable streams. The transferStreams option of configure() and of the per-call options is accepted and ignored, and deprecated in the type declarations; an application that set transferStreams: false to work around a failure has nothing to change and can drop the option

Documentation

  • GetEntriesOptions#filenameValidation and GetEntriesOptions#normalizeFilename state that the name validated and normalized is the final one, after a valid Unicode Path extra field has replaced it; extraFieldUnix and extraFieldInfoZip of EntryMetaData and of LocalDirectory, and EntryMetaData#localDirectory, describe which field the ids come from and when the local file header fills them in; ZipWriterConstructorOptions#unixExtraFieldType says where the "unix" ids are stored and when a reader sees them; Configuration#chunkSize gains a remark on its memory and message cost; Reader#readable says it returns a new stream reading from the start on each access; WorkerConfiguration#transferStreams is marked deprecated
  • The tests README and two test comments no longer describe streams being transferred to the worker

Tests and continuous integration

  • The filename validation test builds an entry whose Unicode Path extra field escapes the directory and checks it at every level and through normalizeFilename; the Unix extra field layout test pins the empty central directory copy of the type 2 field and reads the ids after the data; the local header ids test adds a record carrying both Unix fields with ids and a central directory carrying only the New Unix field while the local file header carries only the type 2 one; a new test counts the reads a reader receives from add()

Benchmarks

  • QUICK=1 runs the benchmark scripts on a reduced matrix in about 50 seconds, for a smoke check of the harness rather than for the page; bench-crc.js follows the current options of the deflate stream

Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.18.2...v2.19.0

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

3 hours ago
scalar

Release 2026-09-30

Releases

@scalar/openapi-to-markdown@1.5.0

Minor Changes

  • #10425: Make single-page Markdown easier to read, especially for AI agents reading llms.txt exports.

    • An operation, webhook or model page now starts with that item as its # title and uses ## sections, without the API's document header. An empty API version is never printed.
    • Schema property descriptions keep their Markdown: paragraphs, links, inline code and fenced code blocks are no longer flattened into one escaped line. A parameter description is no longer repeated by its schema.
    • Each property is one line with its name, type and annotations. Nullable unions read as string | null, single-branch allOf wrappers as the wrapped type, unions of plain types as one type, const and enum schemas without a type as their inferred JSON type, and arrays of simple items as array of …. Composition branches are listed one per item, with discriminator values beside their branch.
    • Parameters are grouped by location. Responses that return the same schema and media type are grouped into one entry, such as a list of error statuses.
    • In linked mode, references are shown as a link in the property's type. Primitive, enum and const schemas and aliases of them are written in place instead of linked; set schemaReferences.inlinePrimitives: false to link them. Generated examples are left out without a placeholder, while a model page generates an example of its own schema with linked schemas as empty stubs.
    • The Authentication section is left out when the API description declares no security requirements, and only an explicit security: [] says that no authentication is required. Security schemes are summarized on one line, for example "API key in header X-Api-Key", instead of printed as JSON.
    • Selected pages retain empty server overrides as / and include server variable choices and descriptions. Model pages retain authored examples for primitive and array schemas as well as objects.
  • #10425: Give shared schemas canonical definitions and internal links in whole-document Markdown exports, retaining primitive types inline and constraints beside references.

    Deduplicate generated examples within each schema and request/response/media-type context, label them as generated, and retain authored examples at their original locations.

    Explain inherited servers and authentication once, with links from operations, while retaining path and operation overrides, server variables, and explicit anonymous access.

    Add a compact contents index linking to operations, webhooks, and schemas through unique explicit anchors.

Patch Changes

  • #10425: Add a browser playground for previewing and downloading per-page, linked, and whole-document Markdown exports from Galaxy, Stripe, GitHub, and Cloudflare examples.
  • #10425: Shorten the ## Schemas section for schemas a page already expanded. Such a model is now a single line, for example `Customer` — shown above., instead of a heading, type, "shown above" note and generated example. The line keeps the model's title and any description that a reference sibling replaced where the schema was expanded. A selected model, leaf schemas, models the page has not expanded, and object models with authored examples keep their full sections. A Stripe operation page such as GET /v1/customers/{customer} drops from about 2.5 MB to about 1.3 MB, with 819 of its 918 model sections reduced to one line. Everything above ## Schemas is unchanged.

@scalar/api-client@3.21.3

Patch Changes

  • #10422: Avoid allocating unused character match ranges during document search.
  • #10402: Keep failed requests visible in the response panel and explain possible CORS or network causes for browser fetch failures.
  • #10400: Hide the authentication dropdown in the API Reference when only one required option is active, while retaining authentication and deletion controls in the API Client.
  • #10382: Preserve enum array selections with their original enum value types as JSON arrays in the structured request body form editor and contain long selection labels.

@scalar/api-reference@1.72.3

Patch Changes

  • #10421: Collect schema search fields in one traversal and reuse extraction within each search index build.
  • #10422: Avoid computing unused character match ranges when searching API references.
  • #10381: Restore indentation for nested properties of expanded object and array query parameters.
  • #10400: Hide the authentication dropdown in the API Reference when only one required option is active, while retaining authentication and deletion controls in the API Client.
  • #10416: Skip unchanged document subtrees when checking configuration updates for content changes.
  • #10403: Correct MIME type normalization return types and accept optional content types without unsafe casts. Remove original keys after normalization and preserve distinct response examples when selecting media types.

@scalar/components@0.30.5

Patch Changes

  • #10401: Preserve inline code styling in collapsed Markdown summaries, including authentication descriptions.

@scalar/types@0.22.3

Patch Changes

  • #10402: Keep failed requests visible in the response panel and explain possible CORS or network causes for browser fetch failures.

@scalar/workspace-store@0.67.2

Patch Changes

  • #10429: Use the schema title for sidebar entries of models grouped with x-tags, matching untagged models.

@scalar/astro@0.4.25

@scalar/docusaurus@0.8.46

@scalar/express-api-reference@0.10.25

@scalar/fastify-api-reference@1.72.3

@scalar/hono-api-reference@0.12.8

@scalar/nestjs-api-reference@1.2.25

@scalar/nextjs-api-reference@0.12.6

@scalar/nuxt@0.6.76

@scalar/starlight@0.2.10

@scalar/sveltekit@0.3.25

@scalar/agent-chat@0.12.39

@scalar/api-client-react@2.0.53

@scalar/api-reference-react@0.9.76

@scalar/asyncapi-validator@0.1.8

@scalar/blocks@0.4.2

@scalar/client-side-rendering@0.4.7

@scalar/core@0.5.39

@scalar/json-schema-validator@0.1.8

@scalar/mock-server@0.17.2

@scalar/nextjs-openapi@0.3.46

@scalar/oas-utils@0.20.8

@scalar/openapi-parser@0.29.9

@scalar/openapi-validator@0.1.8

@scalar/pre-post-request-scripts@0.4.51

@scalar/server-side-rendering@0.1.55

@scalar/sidebar@0.11.10

@scalar/snippetz@0.10.4

@scalarapi/docker-api-reference@0.6.10

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/aspire@0.11.28

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/aspnetcore@2.17.12

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/aws-lambda@0.2.16

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/azure-functions@0.2.22

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/java-integration@0.6.76

Bundled API Reference

  • @scalar/api-reference@1.72.3

scalar_api_reference@0.2.10

Bundled API Reference

  • @scalar/api-reference@1.72.3

@scalar/mock-server-docker@0.2.66

scalar-app@1.1.36

3 hours ago
tiptap

v3.31.4

@tiptap/extension-mathematics

Patch Changes

  • The mathematics extension no longer crashes the editor in older WebKit browsers and WKWebView.

@tiptap/core

Patch Changes

  • Fix a TypeError thrown when the source editor is destroyed right after dragging content into another editor.
  • splitBlock no longer throws TransformError: Inserted content deeper than insertion position when the selection spans block boundaries (for example from the start of one paragraph into another block, or across an isolating node). The command now returns false when the split is not possible.
  • Prevent extra CSS declarations from being rendered from editor content.
  • Atom block directives (:::name {…} :::) indented by up to 3 spaces are now tokenized, matching CommonMark indentation rules for block constructs.
  • Numeric HTML entities (', ') are now decoded when parsing markdown, instead of showing up as literal text in the editor.
  • The editor element keeps role="textbox" after setOptions() when editorProps.attributes is set. Before, a re-render in React replaced the default role with the user attributes. Attributes passed as a function now get the default role as well.
  • Undoing an input rule restores the Markdown characters that triggered it when using Collaboration.
  • Bind parseMarkdown and renderMarkdown to the configured extension so hooks can read this.options and this.name without an Editor.
  • Pressing Enter before the text of a checked task item now leaves the new empty item unchecked and the item with the text checked. Attributes declared with keepOnSplit: false now reset on the new item, not on the one that keeps the text.
  • Stop joinItemForward and joinItemBackward from joining across isolating nodes.
  • Node views without a contentDOM no longer ignore selection mutations, so ProseMirror moves the caret back to a valid position when the browser places it inside the node view.

@tiptap/markdown

Patch Changes

  • Fix Markdown serialization of inline code containing backticks
  • Bind parseMarkdown and renderMarkdown to the configured extension so hooks can read this.options and this.name without an Editor.

@tiptap/extension-code

Patch Changes

  • Fix Markdown serialization of inline code containing backticks

@tiptap/extension-table

Patch Changes

  • Table cells exported to Markdown now escape literal pipe characters, so the cell content survives when the output is read back.
  • Multi-block table cells no longer leak a U+001F control character into Markdown.
  • Right-clicking a cell inside a multi-cell table selection no longer collapses that selection.
  • Prevent extra CSS declarations from being rendered from editor content.
  • Table cells and headers no longer render the default colspan="1" and rowspan="1" attributes. Cells that actually span still render them, matching how prosemirror-tables serializes spans.

@tiptap/extension-list

Patch Changes

  • Parsing large Markdown documents that contain ordered lists is much faster. A 578KB document went from about 19s to about 160ms.

@tiptap/extension-collaboration-caret

Patch Changes

  • Prevent extra CSS declarations from being rendered from editor content.

@tiptap/extension-highlight

Patch Changes

  • Prevent extra CSS declarations from being rendered from editor content.

@tiptap/extension-text-align

Patch Changes

  • Prevent extra CSS declarations from being rendered from editor content.

@tiptap/extension-text-style

Patch Changes

  • Prevent extra CSS declarations from being rendered from editor content.

@tiptap/extension-link

Patch Changes

  • Typing spaces after a link no longer extends the link, including multiple spaces inserted in one transaction. Formatting changes and undo/redo preserve existing linked whitespace.

@tiptap/react

Patch Changes

  • Fix Enter and Shift-Enter inside React node views on iOS and Android.
  • React and Vue now use matching menu extension versions when installed from a specific release.

@tiptap/static-renderer

Patch Changes

  • Render <audio> and <video> with a closing tag instead of self-closing them, so browsers no longer nest the following content inside the first audio element.
  • Rendering a node whose renderHTML returns several nested child elements no longer adds stray commas between them in the HTML string output.

@tiptap/extension-collaboration

Patch Changes

  • Undoing an input rule restores the Markdown characters that triggered it when using Collaboration.

@tiptap/vue-2

Patch Changes

  • React and Vue now use matching menu extension versions when installed from a specific release.

@tiptap/vue-3

Patch Changes

  • React and Vue now use matching menu extension versions when installed from a specific release.
5 hours ago
element-plus

2.14.7

2.14.7

2026-09-30

Bug fixes

  • Build restore workspace context for package publishing (#24934 by @rzzf)

  • Components [time-picker] avoid triggering change twice when clearing (#24841 by @patienry)

  • Improvement(components): [image-viewer] add grab cursor to image viewer (#24903 by @ixyzorg)

6 hours ago
tldraw

v5.5.0

This release is a broad reliability pass over the SDK. Shapes keep changes made by other commands while they are being dragged, resized, rotated, or cropped; touch gestures no longer stick when the browser cancels a pointer; selection, draw, line, note, frame, and arrow interactions survive shapes being deleted or locked mid-interaction; SVG exports embed every resource they reference; and there are fixes across the store, signals, sync, and local persistence. Rich text gets smart typography and wraps a selection in the bracket or quote you type, pasting a link onto a selected shape sets its link, and the note shape's attribution badge can be hidden or replaced. tldraw now re-exports TipTap's extension API, so custom rich text extensions no longer need their own @tiptap/* install, and Editor.setCamera rejects non-finite values instead of quietly coercing them.

What's new

Smart typography in rich text (#10767)

Text typed on the canvas now reads like typeset text. Straight quotes curl, -- becomes an em dash, ... an ellipsis, and -> an arrow. Pressing Backspace straight after a rewrite restores what you typed. The rules are TipTap's Typography extension, added as a standalone entry in getTipTapDefaultExtensions(), so filter it out to keep literal punctuation.

With text selected, typing an opening bracket or quote wraps the selection instead of replacing it: select a word and press ( to get (word). Pressing ` over a selection toggles inline code. Quotes stay straight inside code and in the mono font. The new WrapSelectionExtension does the wrapping, and defaultWrappingPairs lists the pairs it uses.

API changes

  • 💥 Editor.setCamera now throws on a non-finite x, y, or z instead of silently coercing it to 0 or the current zoom level, and no longer mutates the point object passed to it. (#9903)

  • 💥 store.query.filterHistory() now returns its own change counter rather than a value that always matches store.history.get(). After a rolled-back transaction it can be ahead of the store's counter, and it reports a change even for record types the transaction didn't touch. (#10200)

  • Re-export TipTap's extension surface from tldraw: Node, Mark, Extension, mergeAttributes, and getSchema, the Extensions and JSONContent types, and the TaskList and TaskItem extensions. Custom rich text extensions no longer need their own @tiptap/* dependency, which also rules out loading two copies of TipTap. (#10691)

    import { Mark, mergeAttributes } from 'tldraw'
  • Add MESSAGE_TOO_LARGE to TLSyncErrorCloseEventReason. Clients that switch on the reason to pick an error message will want a case for it. (#10810)

  • Add LruCache.delete(key) to @tldraw/utils. (#10338)

  • Add an AttributionComponent option to NoteShapeUtil to hide or replace the note's "last edited by" badge, on the canvas and in exports. Pass null to hide it, or a component that receives TLNoteShapeAttributionProps. The default is exported as DefaultNoteShapeAttribution. (#9407)

    <Tldraw shapeUtils={[NoteShapeUtil.configure({ AttributionComponent: null })]} />
  • Add shapeId to TLUrlExternalContent. defaultHandleExternalUrlContent sets the url as that shape's link instead of creating a bookmark or embed. (#10765)

  • EditorManager.addEditorEvent() now returns an unsubscribe function, and managers can call the new protected unregister() to tear down a resource before the editor is disposed. (#10732)

Improvements

  • npm create tldraw . now scaffolds into the current directory, prompting first when the directory isn't empty. (#10657)
  • Update the AI starter kit templates to current Claude, Gemini, and GPT model ids. (#10058) (#10869)
  • Paste a link with a single shape selected to set that shape's link, instead of creating a bookmark. (#10765)
  • The keyboard shortcuts dialog now says when keyboard shortcuts are turned off in accessibility preferences. (#10532)

Bug fixes

Crashes

  • Fix a crash that could replace the editor with the host app's error screen when a group's child record was removed during a transaction. Children that no longer resolve are skipped, and a group where none resolve falls back to a unit box. (#10668)
  • Fix a crash when a shape is deleted between pointing at it and starting to drag it or one of its handles. (#10179)
  • Fix a crash when a shape being translated, or the frame it is being dragged over, is deleted mid-drag. (#10171)
  • Fix draw and highlight shapes created with no segments throwing in geometry and rendering. (#10224)
  • Fix duplicating a zero-length line throwing. LineShapeUtil.onBeforeCreate no longer mutates the caller's points. (#10248)
  • Fix a line shape with fewer than two points breaking hit testing for the whole page. (#10222)
  • Fix large rooms failing to load in InMemorySyncStorage with a stack overflow. (#10110)
  • Fix a crash in the sync client's reconnect handling when the global WebSocket constructor is undefined during a network or visibility event. (#10783)

Selection and tools

  • Fix shapes losing changes made by other commands while they are being translated, resized, rotated, or cropped. Pressing the rotate shortcut mid-drag, or a remote update arriving during a gesture, is no longer overwritten by the next pointer move. (#9215)
  • Fix tapping a toolbar tool with a stylus, finger, or trackpad sometimes creating a shape instead of selecting the tool. Dragging a tool out of the toolbar now requires the pointer to leave the toolbar, and sliding along the toolbar no longer starts a drag. (#10651)
  • Fix touch gestures staying stuck when the browser cancels the pointer, as it does for an edge swipe, an incoming call, or palm rejection. (#10464)
  • Fix Tab, Shift+Tab, and Ctrl/Cmd+arrow keyboard traversal selecting locked shapes, which clicking and select all never do. (#10482)
  • Fix the right Shift key not giving the large nudge step when moving shapes with the arrow keys. (#10477)
  • Fix keyboard shape navigation, and Editor.selectAdjacentShape('prev'), selecting the second-to-last shape instead of the last one when nothing is selected. (#10601)
  • Fix Ctrl/Cmd+arrow shape navigation preferring a nearer diagonal shape over an aligned one. (#10339)
  • Fix pointer downs inside a rotated multi-selection dragging the wrong shapes, and clicking a selected locked shape with selectLockedShapes selecting the shape behind it. (#10166)
  • Fix the select tool bailing to an old history mark, or crashing, when a resize starts with nothing selected. (#10165)
  • Fix the select tool getting stuck after pressing an arrow label in a read-only editor or on a deleted arrow. (#10183)
  • Use Cmd (Mac) or Ctrl to toggle snapping while dragging handles and wrap mode while brush selecting, matching translate, resize, and crop. (#10172)
  • Fix cancelling a note clone-handle drag leaving the new note behind and switching to the note tool. (#10187)
  • Fix the toolbar losing the originating tool's highlight while zooming with Z, and the zoom tool staying on when Z was pressed straight after clicking a toolbar button. (#10185)
  • Fix the Frame selection action and shortcut doing nothing when a single shape is selected. Locked shapes, and arrows bound to shapes outside the new frame, are now left out of it. (#10627)
  • Fix the enlarge and shrink shortcuts moving shapes away from the original selection's center when several shapes are selected. (#10070)
  • Fix selecting arrows and hollow shapes larger than the viewport by clicking their edges. (#10333)
  • Fix Editor.animateShapes moving locked shapes, and apply ancestor-lock semantics to delete, duplicate, group, and ungroup. (#10334)
  • Fix the select tool getting stuck in translating when a creating tool hands off without an onCreate callback. (#10190)
  • Fix a second quick press on a resize, rotate, or crop handle, or on an image being cropped, being consumed as a double click instead of starting a drag. (#10176)
  • Fix the cursor and state chart after finishing a text edit with the text tool locked. (#10174)
  • Fix crop handles and crop nudges acting on the wrong axis for images inside rotated frames or groups. (#10170)
  • Fix arrow handle drags inheriting the previous drag's precise-binding timer. (#10164)
  • Fix palm touches disturbing pen-mode drags, double clicks with desktop tablet styluses, and a crash when a stylus eraser is used without an eraser tool. (#10346)
  • Stop snapping to hidden shapes and label geometry, and make gap snapping behave the same on both axes. (#10331)
  • Fix groupShapes throwing for locked selections or orphaning shapes at the page limit, ungroupShapes deleting nested children, and both commands ignoring calls made outside the select tool. (#10330)

Camera and viewport

  • Fix the camera not panning to a note created with Tab, Ctrl/Cmd+Enter, or a note's clone handle when the new note landed outside the viewport. (#10486)
  • Fix camera coasting after a fling, and edge scrolling, running roughly twice as fast on a 120 Hz display as on a 60 Hz one. Both now scale by the elapsed tick time, so motion per second is the same at any refresh rate. (#10501)
  • Fix a click landing during a camera animation or a fling being treated as a drag. (#10714)
  • Fix space and the arrow keys panning a locked camera, a pinch on a locked camera acting on the current tool, and the input device preference re-enabling the wheel when wheelBehavior is 'none'. (#10348)
  • Fix setCamera resetting the zoom to 100% when called with a plain { x, y } point. (#10385)
  • Fix forced animated camera moves snapping back inside the camera constraints on their last frame. (#10386)
  • Fix a viewport deep link with a zero-size viewport moving the camera to the page origin instead of falling back to fitting the page content. (#10628)

Arrows and shapes

  • Fix arrow clusters in the stack, pack, and distribute commands depending on selection order, so an arrow selected before the shapes it binds no longer moves separately from them. (#10382)
  • Fix arrow bindings flip-flopping while resizing a bound shape together with its arrow. (#10197)
  • Fix rotated images jumping on the canvas when their aspect ratio or crop zoom changed, or when the image was replaced. (#10233)
  • Fix image and video shapes keeping a removed asset on screen. (#10250)
  • Fix bound arrow terminals moving by the wrong delta when translating a rotated arrow or nudging an arrow. (#10198)
  • Fix short draw strokes with straight segments closing as if they were long. (#10241)
  • Fix the opposite edge of a scaled geo shape drifting when resized past its label's minimum size. (#10217)
  • Fix line animations dropping points when the target line has more points than the starting one. (#10247)
  • Fix highlight shape animations switching to the end shape's props immediately instead of interpolating from the nearer shape. (#10246)
  • Fix draw shapes closing one update late when drawn with straight segments. (#10242)
  • Fix the draw tool freezing the stroke after a quick Shift release during a straight segment. (#10239)
  • Fix notes created inside a rotated frame appearing off-centre from the click. (#10235)
  • Fix a bookmark keeping its old preview after its url changes. (#10208)
  • Fix a frame's contents jumping when double-clicking a frame edge to fit it to its children. (#10206)
  • Fix pasting Excalidraw drawings that use a custom stroke width. (#10779)

Editor

  • Fix keyboard shortcuts being unable to bind the + key (cmd++ was silently dropped and rendered as a bare modifier) and shift+<glyph> shortcuts such as shift+: never firing when the browser reports : with shift held. (#10512)
  • Fix undo after switching pages from the page menu or with Alt+arrow also reverting the edit made before the switch. Switching pages is now its own undo step, matching the "Go back" button on the move-to-page toast. (#10472)
  • Fix TldrawEditor recreating the editor when it re-renders with inline nested camera, deepLinks, text, or gridSteps options. (#10373)
  • Fix preserve-focus mode blurring the editor on canvas clicks. (#10374)
  • Fix double-clicking a custom shape that allows read-only editing doing nothing in a read-only editor. The gate now consults ShapeUtil.canEditInReadonly instead of a hard-coded list of shape types. (#10173)
  • Fix binding and document-settings mutations going through in readonly mode, and index self-referential bindings once. (#10340)
  • Fix selected text disappearing when a whole list is selected, such as by triple-clicking its bullet. (#10808)
  • Fix text measurement for elements containing more than one text node. (#10357)
  • Fix a license key that arrives after the first render being ignored, and stop watermark tracking failures surfacing as unhandled rejections. (#10327)
  • Fix copied content dropping assets the asset store can't resolve. (#10366)
  • Fix asset store removal errors in deleteAssets becoming unhandled rejections. They are now logged. (#10368)
  • Fix geometry hit tests, nearest-point, and length calculations losing precision after a shape's SVG path data was generated. getSvgPathData rounded the geometry's stored points to two decimals in place, and geometries are cached per shape, so every later calculation used the rounded points. (#10600)
  • Fix Editor.getCurrentTheme() returning undefined after setCurrentTheme() was called with an unregistered theme id. The call is now rejected and the current theme is kept. (#10602)
  • Fix Group2d.transform dropping its ignored children, resetting the isInternal, excludeFromShapeBounds, and isEmptyLabel flags, and discarding its opts argument. It now matches the base Geometry2d.transform signature. (#10603)
  • Fix editor.timers keeping every fired or cancelled timer id for the editor's lifetime. (#10782)
  • Fix the debug menu's hard reset running without confirmation and stalling when another tldraw tab is open. (#10529)
  • Fix hideShapes hiding the canvas after debug mode is turned off, and limit edit-on-type to printable keys. The unused reconnectOnPing and debugCursors debug flags are removed. (#10536)
  • Fix embed hostname matching trusting lookalike hosts such as tldraw.com.evil.io, which were rendered with the matched definition's relaxed iframe permissions. A host must now be the pattern itself or a subdomain of it. (#10196)

Exports

  • Fix exports resolving with a partial image when a shape's toSvg throws. Exports now fail fast, custom frame-like shapes export without the default frame util, and trimming an SVG export no longer allocates an oversized measurement canvas. (#10342)
  • Fix exports missing resources and fonts: styles with several urls, font lists, and bare @import rules are now all embedded, failed fetches are retried, and stylesheets that import each other no longer hang the export. (#10338)
  • Fix a failed animated-image or video export hanging every later export of the same asset, because the rejected promise was memoized. (#10226)

Store and signals

  • Fix effects losing a dependency when a set during their first run re-triggered them. (#10146)
  • Fix a side-effect handler being skipped when the previous handler for the same event removes itself while running. (#10231)
  • Fix store changes made in the same frame as dispose() never reaching listeners. (#10223)
  • Fix a throwing store listener stopping the other listeners from receiving the same change-set. (#10216)
  • Fix store.query.ids() and store.query.index() staying stale after a query was read inside a transaction that then rolled back. (#10200)

Persistence and sync

  • Fix local persistence silently dropping edits: changes another tab made while this one was still loading, edits queued in the last few hundred milliseconds before unmount, and writes still in flight when the database closed. (#10332)
  • Fix sync stalling permanently when getUri rejected, which in the documented useSync pattern is an auth-token fetch. A rejected getUri is now retried on the normal backoff, and a closed ClientWebSocketAdapter no longer notifies listeners or reconnects after disposal. (#10107)
  • Fix IndexedDB session state rows accumulating forever. Stale rows are now pruned on load. (#10533)
  • Fix a session removed during its own connect handshake coming back and later emitting a second session_removed. (#10121)
  • Fix useSync still reporting a previous room's error after the uri changed to a new, healthy room. (#10108)
  • Fix oversized chunked sync messages being buffered indefinitely. Assembly is now bounded by a size and chunk-count limit, and a message that exceeds it fails with a MESSAGE_TOO_LARGE sync error instead of disconnecting the client in a loop. (#10810)
  • Fix TLSocketRoom.closeSession leaving the socket open when the close reason is over 123 bytes. The reason is now truncated and ends with ... (+N bytes). (#10116)
  • Fix TLSocketRoom.updateStore not seeing or deleting object-lane records. (#10114)
  • Fix authorizer errors and vetoes being swallowed when TLSocketRoom was created without a log option. (#10117)
  • Fix text arriving corrupted when a message chunk boundary split a surrogate pair, such as an emoji. (#10119)
  • Fix TLSyncRoom.close() leaving per-session timers that could send into closed sockets or emit session_removed and room_became_empty on a closed room. A socket that throws on close no longer leaves the rest open. (#10120)
  • Fix SQLiteSyncStorage tombstone pruning throwing from a timer after the host closed the database, and make the prune transactional so a failure part-way cannot leave the history start ahead of the surviving tombstones. (#10112)

Mermaid conversion

  • Fix converted sequence diagrams crowding tall notes, fragment titles, and participants that are created and destroyed close together. Rows are now placed where mermaid drew them rather than on an even grid. (#10817)
  • Fix sequence diagrams with a created or destroyed participant being drawn much taller than they should be. (#10822)
  • Fix long participant names and notes in sequence diagrams wrapping or breaking mid-word. (#10806)
  • Fix edges between the same two nodes swapping each other's curves. (#10826)
  • Fix flowchart and state diagram edge labels rendering a size smaller than node labels. (#10804)
  • Fix sequence diagram participant boxes being dropped, along with their labels and colors, on conversion. (#10813)
  • Fix sequence diagrams dropping a participant's bottom box, and tilting their arrows, when the source uses destroy. (#10750)
  • Fix self-loops in flowcharts and state diagrams drawing their label on top of the node. (#10773)
  • Fix multi-line notes in sequence diagrams rendering far wider than their text needs, and labels breaking mid-word in diagrams that set their own font size. (#10753)
  • Fix the autonumber options (start, step, off) being ignored in sequence diagrams. (#10079)

CLI

  • Fix create-tldraw --no-telemetry being ignored. (#10789)
  • Fix create-tldraw -t <template> crashing on startup. (#10657)
7 hours ago
swc
7 hours ago
hono

v4.13.12

What's Changed

Full Changelog: https://github.com/honojs/hono/compare/v4.13.11...v4.13.12

7 hours ago
vue-next

v3.6.0-rc.10

For stable releases, please refer to CHANGELOG.md for details. For pre-releases, please refer to CHANGELOG.md of the minor branch.

7 hours ago
core

v3.6.0-rc.10

For stable releases, please refer to CHANGELOG.md for details. For pre-releases, please refer to CHANGELOG.md of the minor branch.

7 hours ago
electron

electron v42.11.10

Release Notes for v42.11.10

Other Changes

  • Backported fixes from upstream ANGLE, Chromium, Dawn and V8. #54565