3 hours ago
driver.js

1.12.1

Changed

  • A new popover focuses Next instead of the close button, so Enter no longer ends the tour.
  • Your CSS can hide or restyle popover parts without !important.

Fixed

  • The popover shows above a dialog that opens mid-step instead of behind it.
  • pointer-events: none inside the highlighted element is no longer overridden.
3 hours ago
driver.js

1.12.1

Changed

  • A new popover focuses Next instead of the close button, so Enter no longer ends the tour.
  • Your CSS can hide or restyle popover parts without !important.

Fixed

  • The popover shows above a dialog that opens mid-step instead of behind it.
  • pointer-events: none inside the highlighted element is no longer overridden.
4 hours ago
electron

electron v43.8.9

Release Notes for v43.8.9

Fixes

  • Stopped trusting certificates issued by eMudhra's revoked RSA intermediates. #55744 (Also in 44, 45, 46)
4 hours ago
electron

electron v44.11.2

Release Notes for v44.11.2

Fixes

  • Fixed a macOS notification observer leak when unsubscribing via another method. #55733 (Also in 45, 46)
  • Stopped trusting certificates issued by eMudhra's revoked RSA intermediates. #55743 (Also in 43, 45, 46)
4 hours ago
electron

electron v46.0.0-alpha.10

Note: This is an alpha release. Please file new issues for any bugs you find in it.

This release is published to npm under the alpha tag and can be installed via npm install electron@alpha, or npm install electron@46.0.0-alpha.10.

Release Notes for v46.0.0-alpha.10

Features

  • Added dynamicId to the Extension structure, exposing the extension's per-load ID used by use_dynamic_url web accessible resources. #55639

Fixes

  • Fixed a macOS notification observer leak when unsubscribing via another method. #55731 (Also in 44, 45)
  • Stopped trusting certificates issued by eMudhra's revoked RSA intermediates. #55741 (Also in 43, 44, 45)
4 hours ago
electron

electron v45.3.1

Release Notes for v45.3.1

Fixes

  • Fixed a macOS notification observer leak when unsubscribing via another method. #55732 (Also in 44, 46)
  • Stopped trusting certificates issued by eMudhra's revoked RSA intermediates. #55742 (Also in 43, 44, 46)
5 hours ago
driver.js

1.12.0

Added

  • popover.instruction makes a step an action step: the user has to do what it says. Next looks disabled until they do.
  • advanceOn: { event, strict: true } lets only that gesture through on the highlighted element.
  • advanceDelay pauses on a completed step before moving on. Action steps show a done state meanwhile.
  • driverObj.advance() completes the current step from your code, like advanceOn does.
  • driverObj.nudge("message") shows a line of feedback in the popover and shakes it.
  • onElementMissing takes "stay", "previous" or "previousAction" as well as a function.
  • disableActiveInteraction: "clicks" blocks clicks on the highlighted element but keeps hover working.
  • onHighlightStarted gets the same signal as onHighlighted.
  • A console warning when disableActiveInteraction makes a step's advanceOn impossible.
  • A highlighted element inside an allowed element, like an item in an open menu, gets a ring instead of a hidden cutout.
  • CSS variables for the instruction row, the feedback line and that ring. See Theming.

Changed

  • Clicks on the padding around the highlighted element, or on an element with disableActiveInteraction, no longer reach your app's document and body listeners. Use onInteraction to see them.
  • disableActiveInteraction: true also blocks Enter and Space on the highlighted element.
  • A highlighted element that your framework re-renders is followed automatically.
  • overlayClickBehavior: "nextStep" does nothing while the popover waits for an element.
  • onDestroyStarted gets the step being entered when the tour is closed during its first animation, not undefined.
  • The State type no longer lists the internal __ keys added in 1.11.0.

Fixed

  • Steps inside a modal <dialog> now dim the dialog and cut out the highlighted element.
  • moveNext(), drive() and destroy() now work when called from onHighlightStarted, onHighlighted or onDeselected.
  • moveTo() starts the tour if it isn't running.
  • setSteps() on a running tour ends it cleanly. Call drive() to start the new steps.
  • A step's showProgress: false now wins over showProgress: true on the driver.
  • A fast double-click no longer skips a step that advances on click. advanceOnClick ignores clicks while a step animates in, as before 1.11.0.
  • The key that completes a step, like Enter, no longer presses a button in the next popover.
  • The highlight and popover stay on their element when it changes size, when a framework rewrites its className, and when the page resizes mid-step.
  • A highlighted element that is removed from the page no longer keeps driver.js classes and aria attributes.
  • drive() without steps no longer locks the page when onDestroyStarted is set.
  • Less layout work while scrolling with hints or a tour, and waitForElement checks the page at most once a frame.
5 hours ago
driver.js

1.12.0

Added

  • popover.instruction makes a step an action step: the user has to do what it says. Next looks disabled until they do.
  • advanceOn: { event, strict: true } lets only that gesture through on the highlighted element.
  • advanceDelay pauses on a completed step before moving on. Action steps show a done state meanwhile.
  • driverObj.advance() completes the current step from your code, like advanceOn does.
  • driverObj.nudge("message") shows a line of feedback in the popover and shakes it.
  • onElementMissing takes "stay", "previous" or "previousAction" as well as a function.
  • disableActiveInteraction: "clicks" blocks clicks on the highlighted element but keeps hover working.
  • onHighlightStarted gets the same signal as onHighlighted.
  • A console warning when disableActiveInteraction makes a step's advanceOn impossible.
  • A highlighted element inside an allowed element, like an item in an open menu, gets a ring instead of a hidden cutout.
  • CSS variables for the instruction row, the feedback line and that ring. See Theming.

Changed

  • Clicks on the padding around the highlighted element, or on an element with disableActiveInteraction, no longer reach your app's document and body listeners. Use onInteraction to see them.
  • disableActiveInteraction: true also blocks Enter and Space on the highlighted element.
  • A highlighted element that your framework re-renders is followed automatically.
  • overlayClickBehavior: "nextStep" does nothing while the popover waits for an element.
  • onDestroyStarted gets the step being entered when the tour is closed during its first animation, not undefined.
  • The State type no longer lists the internal __ keys added in 1.11.0.

Fixed

  • Steps inside a modal <dialog> now dim the dialog and cut out the highlighted element.
  • moveNext(), drive() and destroy() now work when called from onHighlightStarted, onHighlighted or onDeselected.
  • moveTo() starts the tour if it isn't running.
  • setSteps() on a running tour ends it cleanly. Call drive() to start the new steps.
  • A step's showProgress: false now wins over showProgress: true on the driver.
  • A fast double-click no longer skips a step that advances on click. advanceOnClick ignores clicks while a step animates in, as before 1.11.0.
  • The key that completes a step, like Enter, no longer presses a button in the next popover.
  • The highlight and popover stay on their element when it changes size, when a framework rewrites its className, and when the page resizes mid-step.
  • A highlighted element that is removed from the page no longer keeps driver.js classes and aria attributes.
  • drive() without steps no longer locks the page when onDestroyStarted is set.
  • Less layout work while scrolling with hints or a tour, and waitForElement checks the page at most once a frame.
5 hours ago
next.js

v16.5.0-canary.48

Core Changes

  • Prerender route handlers that await immediates: #101593
  • Fix orphaned detached telemetry flush processes: #101588
  • Upgrade React from e84e1492-20261031 to 1620f7b9-20261111: #101587
  • docs: clarify tag invalidation client effects: #101504
  • Keep dev overlay errors across no-op webpack hot updates: #101532

Misc Changes

  • Turbopack: don't grow effect vectors inside the analyzer arena: #101480
  • Fix metadata route selection with --debug-build-paths: #101585
  • eval: generate the docs pointer from the tested Next.js package: #101558
  • Turbopack: scale default disk write concurrency: #101519
  • eval: correct graders for Proxy, instant navigation, and category prefetching: #101523
  • docs: clarify Server Actions configuration: #101549
  • Turbopack: add build cache portability e2e test and fix location-dependent tasks: #100780
  • Turbopack: replace SwcComments with a lightweight MutableComments store: #101543
  • turbo-tasks-backend: merge aggregated data updates for new followers: #100435
  • test: fix keep-alive socket reuse in CSS HMR race helper: #101530
  • turbo-tasks: count task executions in task statistics: #101025
  • test: fix repeated-slashes router push navigation race: #101528
  • next-core: deserialize next.config env and output file tracing globs into typed maps: #100971
  • turbo-tasks: add OrderedJsonValue/OrderedJsonMap with key-order-sensitive equality: #100964
  • turbo-tasks: use OrderedAutoMap/OrderedAutoSet for order-observing values: #100940
  • auto-hash-map: add positional access and IndexMap/IndexSet conversions for ordered maps: #101497
  • test: close lingering prerender-export server connections: #101527
  • test: fix flaky app-root-params-getters/simple: #101525
  • test: fix flaky dev-validation-worker-source-maps: #101524
  • turbo-tasks-malloc: use official mimalloc Rust bindings (v3.6.1): #101518
  • docs: explain complementary Web Vitals and custom metrics APIs: #98968

Credits

Huge thanks to @unstubbable, @timneutkens, @jimmyhmiller, @aurorascharff, @sokra, @lukesandberg, and @adityareddy-dev for helping!

5 hours ago
embed-pdf-viewer

Release v3.2.0

@cloudpdf/contract@3.2.0

Minor Changes

  • #1071 by @bobsingor – The contract has the change op annotations.copy (refs, page, offset, objectNumbers) and its result item (annotations, refMap, dropped, meta). openapi.json describes both.

  • #1075 by @bobsingor – The contract has the change op forms.copy (fields, widgets, page, offset, values, objectNumbers) and its result item (fields, widgets, refMap, dropped, calculationOrder, meta). openapi.json describes both.

@cloudpdf/engine@3.2.0

Minor Changes

  • #1071 by @bobsingor – The cloud engine has doc.annotations.copy(refs, { page?, offset?, objectNumbers? }), and doc.apply takes the op annotations.copy. The copies are made on the server in one request, so nothing is downloaded. Against a server older than 3.2 the change is refused with NotImplemented before anything is sent.

  • #1056 by @bobsingor – The cloud engine works with a server that is older or newer than it for change kinds. A change with a kind of op the server doesn't have yet is refused on its own, before anything is sent, with NotImplemented; its details name the op (kind), the version that has it (needs) and the server's (serverVersion). The changes called beside it still go out. A change from another session of a kind this version doesn't know now reads as stream.desynced with reason: 'unknown-change', so everything is read again; before, it became an event without a type and reads stayed stale.

  • #1075 by @bobsingor – The cloud engine has doc.forms.copy(fields, { page?, offset?, values?, widgets?, objectNumbers? }), and doc.apply takes the op forms.copy. The copies are made on the server in one request. Against a server older than 3.2 the change is refused with NotImplemented before anything is sent.

@cloudpdf/sdk@3.2.0

Minor Changes

  • #1071 by @bobsingor – The SDK has the change op annotations.copy and its result item: ChangeOp.AnnotationsCopy and ChangeItem.AnnotationsCopy.

  • #1075 by @bobsingor – The SDK has the change op forms.copy and its result item: ChangeOp.FormsCopy and ChangeItem.FormsCopy.

@cloudpdf/server@3.2.0

Minor Changes

  • #1071 by @bobsingor – POST …/changes takes the new op annotations.copy: copies of annotations in the same document, with a stamp's drawing and an attachment's file copied on the server. It needs doc.annotate.read and the right to create each kind, not doc.download. A ref the document doesn't have refuses the change with NotFound. On the event stream, a client that says a version before 3.2 gets full-refresh in place of a change with this op. A copy stays within the server's bundleLimits: past one, its change is refused with PayloadTooLarge, and details.limit names the limit.

  • #1056 by @bobsingor – The event stream answers each client as its version reads. A change with a kind that arrived after the client's EmbedPDF-Version goes out as full-refresh in the row's place, and the stream carries on with the rows after it; a full-refresh now says why in its data (reason). An op of POST …/changes with a field the server doesn't know refuses the request with InvalidArg, naming the field, where the field used to be dropped and the op applied without it. An item of a kind the server doesn't know is withheld from a connection that may not read everything.

  • #1075 by @bobsingor – POST …/changes takes the new op forms.copy: a new field from each field named, with its widgets, made on the server. It needs doc.forms.modify, and doc.forms.script to keep scripts, submits and links. A field the form doesn't have refuses the change with NotFound. On the event stream, a client that says a version before 3.2 gets full-refresh in place of a change with this op. A copy stays within the server's bundleLimits: more fields than items refuses its change with PayloadTooLarge.

@embedpdf/core-annotation@3.2.0

Minor Changes

  • #1071 by @bobsingor – New isMovable(record): whether an annotation is one people move at all. Its kind moves, and it isn't bound to text, as a highlight or a redaction of words is. canMove(model, id) uses it, and adds the lock, the session's rights and its editable rule.

@embedpdf/core@3.2.0

Minor Changes

  • #1054 by @bobsingor – A plugin can stage a change that one of the engine's own verbs makes, such as an import: ctx.changes.stage({ label, send }). The queue calls send(doc, { opId }) when it sends the change, so the verb keeps its place among the other changes, and the history records it as one step. opId names the change when the caller of the verb chose an id, and history: false keeps it out of the history. The new HistoryOptions type is the history?: false option a verb takes from its caller.

Patch Changes

  • #1056 by @bobsingor – The page list is read again when the event stream skipped events (stream.desynced). A page inserted or deleted by someone else while a viewer was too far behind used to show only after the document was opened again.

@embedpdf/engine-core@3.2.0

Minor Changes

  • #1071 by @bobsingor – New change op annotations.copy, and doc.annotations.copy(refs, { page?, offset?, objectNumbers? }) for it: copies of annotations inside one document, made as one change that one undo takes away. A copy carries every field of its kind, locked included, and a stamp's drawing or an attachment's file, so doc.download isn't needed. It gets its own ref and a fresh nm, and the session is its author. Links between copies stay: a reply to an annotation that is copied too replies to that one's copy, so a copied group is a group of its own. The result holds the copies, refMap and dropped, with the reasons an import uses. planAnnotationCopies(sources, placement) is the rule itself, without zod, for a viewer that shows the copies before the engine answers. The op arrived in 3.2 (CHANGE_KIND_SINCE), so an older server is never sent it and an older client reads everything again. runAnnotationCopyConformance checks an engine against it. A copy stays within the bundle limits (items, resources, resourceBytes and bundleBytes); past one it is refused with PayloadTooLarge, and details.limit names the limit.

  • #1056 by @bobsingor – Every kind of change op and result item says the version it arrived in, so a client and a server of different versions can tell which kinds the other has. CHANGE_KIND_SINCE lists the kinds that arrived after 3.0 (pages.setScale in 3.1), changeKindsUnknownTo(version, kinds) names the kinds a side of that version lacks, and lacksWhatArrivedIn(version, since) makes the comparison for anything else that arrived in a version. stream.desynced has a second reason, 'unknown-change': a change of a kind this version doesn't know arrived. Each op of a POST …/changes request is now strict about its own fields: an op with a field the schema doesn't name is refused, where the field used to be dropped.

  • #1075 by @bobsingor – New change op forms.copy, and doc.forms.copy(fields, { page?, offset?, values?, widgets?, objectNumbers? }) for it: a new field from each field named, made as one change that one undo takes away. A copy has its source's settings, scripts and default value, and each widget's place, look, flags and actions, moved by offset or put on page. It is named after its source with the next free number (email becomes email_2, billing.name becomes billing.name_2), and it has its source's value unless values is false; a signature never comes along. widgets names the widgets to copy when it isn't all of them. The result holds the new fields, their widgets, refMap and dropped, with the reasons a form import uses, and its events are one forms.created per field. planFormCopies is the rule itself, without zod, for a viewer that shows the copies before the engine answers; copyNameOf and fieldNameTaken name a copy. The op arrived in 3.2 (CHANGE_KIND_SINCE), so an older server is never sent it and an older client reads everything again. runFormCopyConformance checks an engine against it. A form import and a copy now also carry a widget's check style and its dash pattern. fields names at most as many fields as the bundle limits' items; more is refused with PayloadTooLarge, and details.limit names the limit.

  • #1049 by @bobsingor – An annotation update can change nm. A new name renames the annotation in place, and nm: null removes its name. A new name must be free on its page, checked against the page as the change's earlier ops left it; an undo puts back the name the annotation had. The conformance suites check renames, and runChangeConformance's open option takes the PDF to open, such as NAMES_FIXTURE_PDF, a file with missing and shared names.

@embedpdf/engine@3.2.0

Minor Changes

  • #1071 by @bobsingor – The local engine has doc.annotations.copy(refs, { page?, offset?, objectNumbers? }): copies of annotations in the same document, as one change that one undo takes away. In a change of your own it is the op annotations.copy.

  • #1075 by @bobsingor – The local engine has doc.forms.copy(fields, { page?, offset?, values?, widgets?, objectNumbers? }): a new field from each field named, as one change that one undo takes away. In a change of your own it is the op forms.copy.

@embedpdf/engine-services@3.2.0

Minor Changes

  • #1071 by @bobsingor – The worker applies the new op annotations.copy. It reads each named annotation, creates the copies as one change, all or nothing, and records the reverse, so an undo deletes them. A copied stamp places the drawing its original places, so the document gets no second drawing, and a copied attachment gets the same file bytes with its dates. Every create is checked before the first write: the session needs doc.annotate.read and the right to create each kind. A copy carries what a bundle may: as many annotations, and as many drawings and files, of that size each and together. A drawing counts once however many copies place it. Past a limit the copy is refused with PayloadTooLarge before anything is written. document.applyChanges takes the deployment's limits; without them the defaults apply.

  • #1075 by @bobsingor – The worker applies the new op forms.copy. It reads the form, plans the copies before the first write, and creates each new field as a design import creates one: with its widgets, their flags, its value when asked, and its place in the calculation order. Its reverse deletes the fields it made, the last first. It needs doc.forms.modify; a script, a submit or a link is left out and reported without doc.forms.script. A copy names at most as many fields as the bundle limits' items; more is refused with PayloadTooLarge before the form is read.

  • #1049 by @bobsingor – annotations.update and forms.updateWidget write a new nm to the annotation's own /NM, or remove it for null. The object, its replies, its appearance and its other keys stay as they are. A name another annotation on the page has is refused with InvalidArg. An empty name removes /NM, as a create given one writes none.

@embedpdf/angular@3.2.0

Minor Changes

  • #1071 by @bobsingor – EpdfAnnotation has duplicate(refs, options), canDuplicate(refs), isMovable(ref), selection.duplicate(options) and selection.canDuplicate().

  • #1075 by @bobsingor – EpdfForm has duplicate(fields, options) and duplicateWidgets(widgets, options).

Patch Changes

  • #1074 by @bobsingor – <epdf-form-layer> draws a field's picture where the field is now. A field that was moved, in Form design or with updateWidget(), kept its picture at the old place until the page's pictures were loaded again: the field showed in one place and took clicks in another.

@embedpdf/web@3.2.0

Minor Changes

  • #1051 by @bobsingor – The Stage's wheel handling asks the Stage whether a wheel is its own, through the host's new wheelBy, and cancels only the wheels the Stage takes. A wheel the Stage leaves alone reaches the browser, which scrolls the page around the viewer with it. A zoom wheel (Ctrl or Cmd) is always cancelled. A wheel event that isn't cancelable is ignored: the browser is already scrolling the page with it. A test that sends its own wheel events needs cancelable: true on them.

@embedpdf/plugin-annotation@3.2.0

Minor Changes

  • #1071 by @bobsingor – New duplicate(refs, { page?, offset?, select? }) copies annotations in the same document. The copies show at once, it is one step to undo, labelled annotation.duplicate, and it resolves { annotations, dropped }. A stamp keeps its drawing and an attachment its file, with nothing to download, and an annotation keeps its link. selection.duplicate({ offset? }) copies the selection 10 points right and down, or left or up near the page's edge, and selects the copies. canDuplicate(refs) and selection.canDuplicate() are false without the right to create and for a locked annotation, whose copy would be locked too; code can still copy one. isMovable(ref) says whether an annotation is one people move: false for one that sits on text, such as a highlight. Past the engine's bundle limits (10,000 annotations by default) duplicate() is refused with invalid-input, and nothing is copied.

  • #1075 by @bobsingor – selection.duplicate() copies a form's widgets too, in design mode: their owner says how (a radio button's copy joins its group, any other widget's is a new field), and the copies are made in the same change as the annotations', so a selection of both is one step to undo. selection.canDuplicate() asks the owner for them. duplicate(refs) still refuses a widget. For a plugin that lends records (AnnotationLender): copyOps(refs, placement) gives the ops that copy its records, and getAuthority() also says copy.

  • #1054 by @bobsingor – import() is now one step to undo: an undo takes away every annotation the import added, and a redo brings them back under the same refs. It is sent after the changes staged before it, typed text included. An app that imports by itself, such as loading stored annotations when a document opens, passes history: false to keep the import out of undo and redo: annotation.import(bundle, { history: false }).

@embedpdf/plugin-form@3.2.0

Minor Changes

  • #1075 by @bobsingor – New duplicate(fields, { page?, offset?, values? }) copies whole fields: each copy is a new field named after its original (email_2), with its settings, scripts and widgets, and no answer unless values is true. New duplicateWidgets(widgets, options) copies widgets as Duplicate does in a form designer: a radio button's copy is another button of its group, with the next free Choice<n>, and any other widget's copy is a new field; widgets of one field copied together become one new field. Both show their copies at once, are one step to undo, and resolve { fields, widgets, dropped }. In design mode the annotation plugin's selection.duplicate() copies the selected widgets through this plugin. addWidget() now shows its new widget before the engine answers. getSelectedField() is also the field when several of its widgets are selected, such as a radio group's buttons. Past the engine's item limit (10,000 fields by default) the call is refused with invalid-input, and nothing is copied.

  • #1054 by @bobsingor – import() is now one step to undo: an undo takes away the fields the import added, and a redo brings them back. An app that adds fields by itself passes history: false to keep the import out of undo and redo: form.import(bundle, { history: false }).

@embedpdf/plugin-stage@3.2.0

Minor Changes

  • #1051 by @bobsingor – A wheel or trackpad scroll over the Stage no longer gets stuck at the end of the pages. A scroll that begins where the pages can't scroll any further the way it pushes now scrolls the page around the viewer, as it does at the end of any scrolling element. A scroll that reaches the end stops there, momentum included, and the next one scrolls the page. On a trackpad the next swipe is the next one, also while the last still coasts. In paged flow a push past the edge still turns the page while there is one to turn to, and on a trackpad every swipe now turns one: a swipe that began while the last one still coasted turned nothing. The new scrollChaining setting is on by default. Set it to false in an app where the viewer fills the window, and the Stage keeps every wheel over it, as before: a sideways swipe the pages can't follow then never reaches the browser's back gesture.

@embedpdf/viewer-chrome@3.2.0

Minor Changes

  • #1071 by @bobsingor – New command annotation:duplicate, with Ctrl/Cmd+D and a button in the bar over a selection. It copies the selected annotations beside the originals and selects the copies, as one step to undo. The button shows for annotations people move, so not for a highlight, and is greyed out while a locked annotation is selected. New icon duplicate and label commands.annotate.duplicate, in all 15 languages.

  • #1075 by @bobsingor – Duplicate (annotation:duplicate, Ctrl/Cmd+D) now copies form fields in Form design: a radio button's copy joins its group as a new choice, and any other field's copy is a new field named after the original. The form design sidebar has Duplicate group for a radio group, which copies the whole group as a new one. New label formDesign.duplicateGroup, in all 15 languages.

Patch Changes

  • #1069 by @TbhVishal – A comment and a reply show their time as well as their day, with the year once it isn't this year's, and the whole date and time in a tooltip. Dates, times and file sizes are written in the language the viewer shows, the way the reader's region writes them: an English viewer reads 14 Sept, 17:30 in a British browser and Sep 14, 5:30 PM in an American one, and a locale that names a region, such as 'en-GB', writes them that way for everyone. A language whose code the browser can't read is written in the browser's own formats.

@embedpdf/default-fallback-fonts@1.0.1

Patch Changes

  • #1070 by @bobsingor – The package's page on npm says what the fonts are and which packages bring them, with the fonts' license notice under it. The notice is a file of the package too, NOTICE.md.

@embedpdf/default-signature-fonts@1.0.1

Patch Changes

  • #1070 by @bobsingor – The package's page on npm shows how to give the three fonts to the stamp plugin, with the fonts' license notice under it. The notice is a file of the package too, NOTICE.md.

@embedpdf/react@3.2.0

Patch Changes

  • #1074 by @bobsingor – <FormLayer> draws a field's picture where the field is now. A field that was moved, in Form design or with updateWidget(), kept its picture at the old place until the page's pictures were loaded again: the field showed in one place and took clicks in another.

@embedpdf/svelte@3.2.0

Patch Changes

  • #1074 by @bobsingor – <FormLayer> draws a field's picture where the field is now. A field that was moved, in Form design or with updateWidget(), kept its picture at the old place until the page's pictures were loaded again: the field showed in one place and took clicks in another.

  • #1073 by @bobsingor – Opening another document while one is shown in a <Stage>, or closing the shown one, no longer throws Cannot read properties of null (reading 'getLensId') (in Safari, null is not an object (evaluating '$$props.stage.getLensId')) and leaves the Stage blank. A page stays readable until its layers are gone: a layer that reads usePage() in a cleanup gets the page as it last was.

@embedpdf/vue@3.2.0

Patch Changes

  • #1074 by @bobsingor – <FormLayer> draws a field's picture where the field is now. A field that was moved, in Form design or with updateWidget(), kept its picture at the old place until the page's pictures were loaded again: the field showed in one place and took clicks in another.

@cloudpdf/web@3.2.0

@cloudpdf/plugin-protected-display@3.2.0

@cloudpdf/server-modules@3.2.0

@cloudpdf/viewer-angular@3.2.0

@cloudpdf/viewer@3.2.0

@cloudpdf/viewer-react@3.2.0

@cloudpdf/viewer-svelte@3.2.0

@cloudpdf/viewer-vue@3.2.0

@embedpdf/core-acrojs@3.2.0

@embedpdf/core-fonts@3.2.0

@embedpdf/core-form@3.2.0

@embedpdf/core-geometry@3.2.0

@embedpdf/core-js-sandbox@3.2.0

@embedpdf/core-signature@3.2.0

@embedpdf/core-stage@3.2.0

@embedpdf/core-text@3.2.0

@embedpdf/core-ui@3.2.0

@embedpdf/engine-runtime@3.2.0

@embedpdf/engine-runtime-darwin-arm64@3.2.0

@embedpdf/engine-runtime-darwin-x64@3.2.0

@embedpdf/engine-runtime-linux-arm64@3.2.0

@embedpdf/engine-runtime-linux-x64@3.2.0

@embedpdf/engine-runtime-linuxmusl-arm64@3.2.0

@embedpdf/engine-runtime-linuxmusl-x64@3.2.0

@embedpdf/engine-runtime-wasm32@3.2.0

@embedpdf/engine-runtime-win32-arm64@3.2.0

@embedpdf/engine-runtime-win32-x64@3.2.0

@embedpdf/plugin-actions@3.2.0

@embedpdf/plugin-attachment@3.2.0

@embedpdf/plugin-commands@3.2.0

@embedpdf/plugin-fonts@3.2.0

@embedpdf/plugin-history@3.2.0

@embedpdf/plugin-i18n@3.2.0

@embedpdf/plugin-interaction@3.2.0

@embedpdf/plugin-link@3.2.0

@embedpdf/plugin-measurement@3.2.0

@embedpdf/plugin-metadata@3.2.0

@embedpdf/plugin-outline@3.2.0

@embedpdf/plugin-page-edit@3.2.0

@embedpdf/plugin-redaction@3.2.0

@embedpdf/plugin-render@3.2.0

@embedpdf/plugin-search@3.2.0

@embedpdf/plugin-selection@3.2.0

@embedpdf/plugin-shell@3.2.0

@embedpdf/plugin-signature@3.2.0

@embedpdf/plugin-stamp@3.2.0

@embedpdf/plugin-view-manager@3.2.0

@embedpdf/viewer-angular@3.2.0

@embedpdf/viewer@3.2.0

@embedpdf/viewer-react@3.2.0

@embedpdf/viewer-svelte@3.2.0

@embedpdf/viewer-vue@3.2.0