v4.2.0
[!IMPORTANT] Vuetify Needs Your Support! The OpenCollective funds are running low. The team needed to scale down and is barely able to compensate the contributors for their work on the framework and the ecosystem tools.
If Vuetify is part of your stack, please consider sponsoring the project so we can continue delivering updates and fixes.
Every contribution helps us keep Vuetify alive and signals to maintainers that their effort is appreciated.
Thank you.
The following components have been promoted to the core framework from labs:
- inputs: add open-on-focus to inputs with VMenu (#23126) (44e789f), closes #22934
- rules: promote from labs (2871f71)
- util: consume @vuetify/v0 utilities in core (#23039) (94b72d5)
- VAutocomplete,VCombobox: add
close-on-input-clickprop (#23023) (5dfeb32), closes #23021 - VBtnGroup: add
sizeprop to align with standalone buttons (9b46baa), closes #16054 - VCombobox: add
trim-valuesprop (#22895) (2614f43), closes #14874 - VDateInput: auto-fill separators while typing (#23052) (6225a83), closes #23051
- VDatePicker: correct range selection background for RTL (5448a61)
- VFileInput: add placeholder support (#23048) (988ffd1), closes #19837
- VFileInput,VFileUpload: unify dragging effect (#22909) (0440f63), closes #20576
- VNavigationDrawer: support percentage width (8f8def5), closes #16150
- VProgress,+Linear,+Circular: add duration control for value transition (9d4da1b), closes #22442
- VProgressLinear: add
revealprop (7764b49) - VRadio: v-model should work normally without VRadioGroup (92643be), closes #16245
- VSelect/VAutocomplete/VCombobox: allow persistent menu (#23008) (71d38a6), closes #20590
- VSelect/VAutocomplete/VCombobox: new events for multi-selection (#23038) (45079af), closes #4054 #5682
- VSkeletonLoader: add
chip-grouptype (06cbc10), closes #20695 - VSkeletonLoader: add
typesprop & reintroducetable-cell(#23037) (b5d380b), closes #20942 #17506 - VSlideGroup: emit when reaching an edge (62dbe20), closes #11364
- VSlideGroup: add
slidefunction (c3d2ce2), closes #21250 - VSlideGroup: add
scroll-snapandscroll-distanceprops (3f24ffe), closes #15916 - VVirtualScroll: add optional position parameter to scrollTo method (#18574) (405cd92)
- defaults: let user defaults override hardcoded subcomponent props (#23108) (bb09f8b), closes #21279 #21420 #21490
- defaults: avoid parent config leaking into menu and dialog content (#23016) (fc3e32e), closes #18123
- v-tooltip: correctly handle
trueandundefined(cef88bf), closes #20463 - v-touch: ignore scroll within (19ee74e), closes #21888
- v-touch: react to binding value changes (937a471)
- variant: clip underlay and overlay with overflow (#22992) (10d0b28), closes #22868
- VAutocomplete,VCombobox,VSelect: improvements for native form submissions (#23022) (2c51006), closes #21938 #22270
- VBtn: no letter-spacing for RTL locales (3956c08), closes #19627
- VBtnGroup: correct height for x-large size (b2294cd)
- VIconBtn: align default color with VBtn (1695a49), closes #23085
- VInput: do not animate details when mounting the whole field (c55238f), closes #23049
- VInput: consistent transitions of details/messages/counter (#23049) (9d7e741)
- VMenu: submenu a11y/navigation improvements (#22904) (e2a12c1)
- VMenu: avoid close cascading through non-menu overlays (e30eb47), closes #20468
- VMenu: custom overlays and tooltips should not prevent closing (#22993) (d01d4ac)
- VSelect/VAutocomplete/VCombobox: stable focus navigation in the virtual window (aae8fc4)
- VSelect/VAutocomplete/VCombobox: resilient navigation when seaching (#23031) (7a33ea9), closes #18383 #22770
- VSliderGroup: reliably select partially visible items (55d8e80), closes #21806
- VTextField: keep caret/selection when changing field type (47c9cc1), closes #16109
- VTreeview: improved open state when searching (#22983) (53afa91), closes #22035 #22392
- VTreeview: more aria attributes and correct keyboard navigation (#22903) (bad201d), closes #10796 #21585
v16.4.0-canary.14
- turbo-tasks-malloc: report memory from mimalloc: #97761
- Remove Edge runtime handling in use-cache-wrapper: #98139
- Skip discussions in the
issue_lockworkflow: #98146 - [ci] Fix
issue_lock: #97755 - docs: document preloading with Cache Components: #97864
- chore: Remove expired sharp release age exclusions: #98120
Huge thanks to @lukesandberg, @mischnic, @eps1lon, @aurorascharff, and @styfle for helping!
Release Next v3.0.0-next.11
-
#793 by @bobsingor – Introduces the PDF action engine: one policy-gated dispatcher for the payload-carrying
/Aaction trees (execute/canExecute,dispatch/canDispatchby annotation ref). Domain plugins register executors and sinks through the/contract/hostlens (stage: goto/named; form: javascript/reset-form; annotation: the session-visibility sink), the framework installs a URI/Print UI adapter viasetUiAdapter, andonAction/onDiagnosticevent hooks report every dispatch. Chains walk in PDF/Nextorder with document-lifetime work first and navigation/external effects deferred until it succeeds;launch/goto-remote/media stay never-executable and incomplete trees are refused whole.Phase 2 adds annotation
/AAevents, ordered page lifecycle events, and the document-open sequence. Dispatch now submits synchronously into the serial queue, returns per-step trigger results, derives origin centrally, and never rejects. The lifecycle coordinator buffers initial page state behind the open barrier and caps programmatic cascades;/Ashadows/AA U. The shared hover pump coalesces Exit→Enter pairs, and configuration can gate triggers and the open sequence.The package now publishes bundle-safe
/contractand/contract/hostentries. They expose the public and sibling-host protocols over the same token without pulling in dispatcher or plugin wiring; the package root remains the explicit implementation opt-in.
-
#793 by @bobsingor – Document lifecycle events + the submit sink chain (Phase 4). The five catalog
/AAverbs (ISO 32000-2 Table 200 — WC/WS/DS/WP/DP) dispatch through the trigger spine ({scope:'document', event:'will-save'|…}), with the open-ordering law: catalogOpenActioncan never run AFTER a lifecycle verb. NEWrunDocumentVerb('save'|'print', operation)— before-event → operation → after-event as ONE serialized queue op (two saves can never interleave; a before-event failure never cancels the verb; an operation throw skips the after-event and rethrows) — andprepareClose()(the cooperative WC door; scripts never run in teardown). The Print door fires WP → adapter EXACTLY once → DP under one latch: a nested print request (a WillPrint script callingdoc.print()) is suppressed with areentrant-printdiagnostic, never a second dialog; an adapter throw skips DP. SubmitForm graduates from hard-blocked to the SINK CHAIN — embeddersetSubmitHandler(consent = installation; detached-promise contract:executedmeans handed to the embedder) → the document's home (doc.forms.submit, engine-asserted, awaited) → blocked withno-submit-sink; the form plugin registers the ONE dataset resolver (registerSubmitResolver), both action nodes and scriptdoc.submitForm()effects normalize to oneSubmitIntent, and policy gains a'submit-form'row (user-origin only by default). The catalog read is memoized per document with rejection eviction. ShipssubmitEntriesToUrlEncodedfor handlers. The plugin still never touches a network. -
#793 by @bobsingor – THE JavaScript switch lives here now:
actionsPlugin({ javascript })owns the per-document ScriptHost realm, registers the realjavascriptexecutor (page-scoped world prefetch → boot → run → owner-sink commits → surface, ALL inside the host transaction — the commit-inside-the-boundary law), and exposes the transaction port +surfaceScriptResultoncontract/host. Owner commit sinks replace direct engine writes (registerFormCommitSink/registerAnnotCommitSink— each plugin commits AND reconciles its own model, so the PDF and the pixels can never diverge). Trigger provenance reaches executors (ActionContext.event+eventOf), and — full ISO — the Hide action routes by OWNING plane: field names and widget object numbers become formsetDisplayeffects, plain annotations become document flag patches; the session-visibility sink (SessionEffectSink/registerSessionSink) is REMOVED.ActionUiAdaptergainsalert/gotoPage(+ print context) as the ONE UI port for every script effect, with thedoc.printauthority gate upstream andonScriptDiagnostic/onScriptErrorhooks. A deterministic per-dispatch JS node cap (maxScriptNodesPerDispatch) bounds/Nextchains.
- #793 by @bobsingor – The annotation and form response schemas now describe action nodes as a payload-carrying discriminated union exposed through reusable OpenAPI components. Recursive
/Nextelements intentionally remain open ({}) for Fern compatibility, so generated SDK types showunknown[]for nested chains without duplicating the action model for every response path.
- #793 by @bobsingor – Action trees parsed from the hosted engine now carry full interpreter payloads (the discriminated
PdfActionNodeunion) andDocumentActionsSnapshot.openDestination; the snapshot schema defaultsopenDestinationso responses from older deployments still parse. Cloud actions conformance now gates the payload matrix and the destination-form/OpenActionon the HTTP + native-runtime path.
- #793 by @bobsingor – Action trees now use shared generated types for their payload-carrying union (destinations, URIs, named actions, Hide targets, ResetForm state, file specs) instead of repeating the same models for every annotation and form response path. Recursive
/Nextchain elements remainunknown[]— a Fern limitation of the emitted recursive schema, not missing data.
- #793 by @bobsingor – Action reads served by
/v1/docs/:docId/actions@:token(and the layer-scoped variant) now include interpreter payloads on every executable node and the destination-form/OpenActionasopenDestination, via the shared engine-services reader. The wire representation of action nodes changed shape (payload-carrying discriminated union); deploy server and clients from the same prerelease train.
-
#793 by @bobsingor – Complete the Acrobat AF forms support library in the scripting prelude:
AFNumber_Keystroke,AFPercent_Keystroke,AFDate_Format/AFDate_Keystroke(Ex),AFTime_Format(Ex)/AFTime_Keystroke,AFSpecial_Format/AFSpecial_Keystroke,AFRange_Validate,AFMergeChange,AFMakeNumber, andAFExtractNums, with Acrobat-compatible rejection alerts, a lenient scand-style date parser, and newh/hh/tt12-hour tokens inutil.printd. Forms built with Acrobat's standard number/date/time/special formats (for example the Apryse demo form) now validate, format, and auto-calculate instead of failing on missing globals.javaScriptSourcesFromActionTreenow narrows on the payload-carrying action-node union and collects onlyjavascriptarms; rendition/JSremains represented but is deliberately not executed. A newui-effect-suppresseddiagnostic also makes permission-withheld script UI effects observable. -
#793 by @bobsingor –
doc.submitForm(...)emits a submit INTENT (Phase 4): both Acrobat forms — positional(cURL, bFDF, bEmpty, aFields)and the argument object (cURL/aFields/bEmpty/cSubmitAs/bGet) — become a{kind:'submitForm'}UI effect (include-mode field names;cSubmitAsbeatsbFDF; nothing in the VM ever touches a network — resolution and the sink chain live outside). Doc-typed events now carryevent.target = the Doc object(Acrobat's WillSave boilerplate doesevent.target.getField(...)). The v1-frozen posture constants are honest again:submitForm: 'sink-chain',catalogLifecycleActions: 'execute-on-verb', page/annotation eventsexecute-*— the actions plugin's policy is the live authority these document. -
#793 by @bobsingor – The ScriptHost and the annots plane.
createScriptHostowns the ONE realm per document (its own serialized transaction port; lazy name-tree boot delivered exactly once to the first transaction; resource faults poison and lazily rebuild the realm; per-run and caller-sliced budgets). The script world grows the curated annotation plane:this.getAnnots({nPage})/getAnnot(nPage, name)over a caller-prefetched, page-scoped input (null when nothing matches — Acrobat parity; unfetched pages are a NAMED compatibility deviation),Annotwrappers with a per-subtype validity matrix (ANNOT_WRITABLE_KEYS, drift-guarded against the kind registry; no dictionary access — the Acrobat model),setProps/getProps, and diff-derived canonicalannotEffectsbesideformEffects(declared cross-plane commit order: form first, then annot). Ships the standardcolorobject (constants +convert/equalwith the documented G/RGB/CMYK vectors), Acrobat{type, name}event overrides, and — cycle fix — theScriptSandbox/ScriptSandboxFactorystructural contract now lives HERE (core-js-sandboximplements and re-exports it).
-
#793 by @bobsingor – Session-visibility overlay:
Model.sessionHiddenwithsetSessionHidden/forgetSessionHidden/clearSessionHiddenmessages, composed through the neweffFlags/effBearerlenses so Hide actions and scripts flip presentation-only visibility (paint, hit-testing, selectability, handles) without ever touching the document/Fflags — and a session-SHOWN annotation is live, not painted-but-dead. The overlay survives page reloads and is forgotten only on true deletes. -
#793 by @bobsingor –
sessionHidden,effFlags/effBearer, and the session-visibility messages are REMOVED — visibility is document truth again (/Fflags, mutated through the normal write path), and every paint/hit/selection gate reads the annotation's own flags.
- #793 by @bobsingor – Adds
createEventHook(the one capability-event primitive: subscribe-onlyEventHook<T>face, snapshot fan-out, listener error isolation, inert after dispose) andcreateSerialQueue(promise-tail serialization) to the core toolkit.
-
#793 by @bobsingor – The SubmitForm intent and the document's-home submit contract (Phase 4). The
submit-formnode grows an ATOMIC optionalpayload(url+fields+ decodedSubmitFormFlags+charSet?; absent = older-runtime extraction, the node stays recognized-inert — partial states are unrepresentable).decodeSubmitFormFlagsis the ONE ISO Table-240 decode (excludederived from bit 1, never duplicated; bit 12 isExclFKey, bit 13 reserved,EmbedFormis bit 14; bit 9 SubmitPDF dominates format with GetMethod kept alive). NEW:doc.forms.submit?(request)— the optional delivery-to-the-document's-HOME capability (present only where a home exists; the local engine truthfully lacks it), gated by the NEW grant-minteddoc.forms.submitscope (no PDF permission bit exists for submission, sopdf.permissionsnever expands it);FormSubmissionRequest/ReceiptDTOs + wire schemas fix the record shape (dataset entries + declared intent as METADATA — the home derives WHO submitted from its own verified session, and never fetches the PDF's URL). Conformance pins the payload extraction (/UFprecedence, flag decode, both degrade shapes) in both flavors. -
#793 by @bobsingor –
PdfActionNodeis now a discriminated union carrying full interpreter payloads — agotowithout its destination or auriwithout its URI is unrepresentable. Executable arms:javascript(script),goto(destination),uri(+isMap),named,hide(targets +/H),reset-form(fields: PdfActionTargetRef[] | null— null means/Fieldswas absent and every field resets — plus the exclude flag), the file-spec arms, andrenditionwith its optional/JS. Unreadable payloads degrade that node tounknownwith the newpayload-droppedtree warning.DocumentActionsSnapshotgainsopenDestination(the destination-form/OpenAction, schema-defaulted and mutually exclusive withopenAction),ActionReadBudgetgains target-entry and payload-text limits, andPdfDestinationSchemamoved to a neutraldto/module (re-exported from its old home). The wire entry now also exposesPdfActionWireComponents, the stable named-schema registry used by API generators. This is a breaking source-level contract for code that constructed or narrowed action nodes, recorded as minor only because the3.0.0-nexttrain is prerelease.
-
#793 by @bobsingor – SubmitForm payload getters (Phase 4).
EPDFAction_GetNodeSubmitForm(has-fields + the raw ISO Table-240 flag word; returns true only when the REQUIRED/Fresolved to a URL — a<< /FS /URL >>file specification with/UFpreferred over/Fper 7.11.2, or a bare string/Faccepted as a producer-compat extension),EPDFAction_GetNodeSubmitFormURL, andEPDFAction_GetNodeSubmitFormCharSet(PDF 2.0/CharSet, extracted not encoded)./Fieldsentries ride the existing shared target storage (GetNodeTargetCount/TargetName/TargetObjectNumbernow also answer for submit-form nodes) and the aggregate payload/target budgets. An unresolvable required component withholds the WHOLE payload — the reader degrades the node; never a half payload. -
#793 by @bobsingor – Add action-payload getters to the fork's detached action model: unified Hide
/T/ ResetForm/Fieldstarget accessors (EPDFAction_GetNodeTargetCount/Name/ObjectNumber, with-1marking a target list that could not be fully represented — a partial list must never execute),EPDFAction_GetNodeHideFlag(/H, spec default hide),EPDFAction_GetNodeResetForm(/Fieldspresence +/Flagsexclude bit — absent and empty are different states),EPDFAction_GetNodeURIIsMap, andEPDFDoc_GetOpenActionDestfor the destination-form catalog/OpenAction. Payload capture stays inside the build-time snapshot (nothing lazy, nothing stateful), guarded by new cumulative per-model budgets for target entries and payload bytes plus a destination-array element cap.
-
#793 by @bobsingor – The action model reader extracts the SubmitForm payload atomically (feature-detecting the Phase-4 runtime getters: an older runtime payload yields the bare recognized-inert node — the pin-lag skew case, unit-pinned; a NEW runtime withholding an unresolvable
/Fdegrades the whole node tounknown+payload-dropped)./Fieldstargets and the URL/CharSet strings charge the existing aggregate budgets. -
#793 by @bobsingor – The action-model walker now materialises interpreter payloads (destinations, URIs +
/IsMap, named-action names, Hide targets +/H, ResetForm three-state fields + exclude, file specs) with reserve-before-allocate budgeting — payload lengths are charged against the aggregate read budget before any scratch buffer is allocated, and name-tree script names ride the same budget.readActionModeland the annotation/form field readers take the owning document pointer;readDestinationmoved to a sharedfeatures/destinations/home. The link target is now a pure projection of the payload-carrying activate tree (linkTargetFromActionTree) — the duplicate native root-read is gone, anincompletetree projectsunsupported, and a malformed/Ano longer silently falls back to/Dest.
- #793 by @bobsingor – NEW
@embedpdf/angular/actionsentry:injectActionsUiAdapter(handlers?)— Angular's spelling of React'suseActionsUiAdapter(theinject*law), installing the SHARED default policy from@embedpdf/webso the two bindings can never drift; re-exports the@embedpdf/plugin-actionscontract. The parity gate goes green (actionsported;anchoredconsciously added to PENDING).
- #793 by @bobsingor – Route the Stage adapter's interaction dependency through the bundle-safe plugin contract entry instead of the interaction implementation root.
-
#793 by @bobsingor – New
@embedpdf/react/actionsentry withuseActionsUiAdapter(browser-default URI open throughsanitizeExternalUri+ print dialog, overridable per handler), auseCapabilityEventhook for capability event subscriptions, and link-layer delegation: chain-bearing URI links drop the nativehreffast path so the dispatcher runs the whole chain (the'dispatched'outcome opens nothing itself — the adapter owns it).Widget fill controls become always-active
/AAevent surfaces, link anchors feed link hover events, and scripting-provider defaults use the dispatch origin when deciding whether to suppress lifecycle/boot UI effects.Route sibling feature dependencies through plugin contract/helper entries. Annotation selection hooks and anchor equality helpers are split into leaf modules so form and annotation-menu entries no longer import the full annotation feature implementation.
Render PDF list boxes as visible native scrolling controls in both form surfaces, with stable optimistic selection and wheel isolation so row hit-testing, selection, and scrolling stay synchronized while engine writes complete. Combo boxes retain their baked resting appearance and native popup behavior.
Keep keyboard focus indicators above baked PDF appearances so checkboxes and choice controls display the same clear blue focus ring as text fields and radio buttons.
-
#793 by @bobsingor –
useActionsUiAdapteris the ONE script UI port: it gainsalertandgotoPagedefaults with the origin×phase visibility matrix (lifecycle/boot alerts and non-user print suppressed unless the embedder passes handlers — which receive everything, context attached).useFormScriptingProviderandFormScriptingUiHandlersare DELETED.
-
#793 by @bobsingor –
useActionsUiAdapteris now glue over@embedpdf/web'screateDefaultActionsUiAdapter— behavior-identical (the corpus alert matrix pins it); the default policy lives in ONE place for every binding. -
#793 by @bobsingor – Widget activation is a WIDGET behavior, not a push-button behavior: clicking ANY form widget now dispatches its
/Athroughform.activateWidget— text, toggle, and choice widgets (both the annotation-backed renderers and the standalone fill layer) join the button path. This makes real-world "fake buttons" work: producers ship Reset/Next/Hide controls as READ-ONLY text fields carrying a widget/A(ISO puts the activate action on the annotation dictionary, any field type), which previously died in the viewer because only push buttons routed clicks to activation while the pointer feed's mouseUp was — correctly — shadowed by/Aprecedence. Disabled controls become pointer-transparent so their clicks reach the activation surface (a disabled form control suppresses click events entirely); toggles keep Acrobat's order (the value change first, THEN the/A); push buttons keep their gated door (disabledstill blocks activation there). Proven end-to-end by a real-DOM regression test (rendered FormLayer over a real engine — the gap every prioractivateWidget()-direct test masked) and a read-only fake-button fixture in the plugin e2e.
- #793 by @bobsingor –
createDefaultActionsUiAdapter— the actions UI adapter's DEFAULT policy (the origin×phase visibility matrix: hover/lifecycle prints suppressed, boot/lifecycle alerts suppressed, sanitizeExternalUri URI opens, browser fallbacks), hoisted here and written ONCE so every framework binding (react, angular) ships the same behavior instead of forking it. Structural twins keep this package plugin-free per the layering law;overridesaccepts a getter for late-bound handlers.
-
#793 by @bobsingor – Registers the action engine's session-visibility sink (
applySessionVisibilityon the host lens) when@embedpdf/plugin-actionsis present, and carries the full activate action tree + annotation ref onLinkNavItemso the nav layer can delegate chains to the dispatcher.The pointer-driven hover diff feeds annotation
/AAcursorEnter/cursorExit through the shared hover pump while reducer-side clears, widgets, links, and tree-less items stay inert.LinkNavItemalso carries hover-event presence flags for the link plane.Publish bundle-safe
/contractand/contract/hostentries over the same annotation token, plus the focused/authoringhelper entry./internalkeeps its implementation-helper meaning and no longer serves as the sibling bundle boundary. -
#793 by @bobsingor – The session-visibility overlay is RETIRED —
applySessionVisibilityis replaced bycommitScriptEffects, the annotation DOCUMENT-commit sink: script/Hide effects become engineannotations.updatepatches (colors crossing the Acrobat-array → engine boundary,/APregenerated engine-side), authority-enforced, stop-on-failure, with the owner reconciling its own model per touched page.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for command tokens, definitions, resolved-command equality, and capability types without command plugin wiring.
-
#793 by @bobsingor – Widget activation joins the action engine: with
@embedpdf/plugin-actionsinstalled,activateWidgetdelegates the full/Atree to the dispatcher (return type is nowWidgetActivationResult, discriminating the two worlds), so Hide/ResetForm push buttons work with scripting disabled. The host lens exposes the interim executors' doors:runActivationScript(one JS node as a widget transaction) andresetFormAction(three-state target resolution, one batch reset skipping non-resettable families, recalculate after). Executor-driven form mutations ride the same serial mutation queue as user commits — strictly actions-queue → form-queue, never the reverse.The widget DOM-event door dispatches widget
/AAtrees, including coalesced hover events. Activation now submits synchronously through the dispatcher, and script UI effects carry their dispatch origin; print requests without document permission are withheld with an observable diagnostic.Form scripting is fault-tolerant per event: Keystroke, Validate, Calculate, and Format exceptions degrade to diagnostics while explicit
event.rc = falseremains a rejection and resource-budget faults still fail the transaction. Keystroke actions now run Acrobat's typing and commit passes so standard AF validators and custom transforms see the expected event shape.Publish bundle-safe
/contractand/contract/hostentries over the same form token, plus a focused/scriptinghelper entry./internalremains an implementation visibility surface rather than the sibling bundle boundary. -
#793 by @bobsingor – The submit dataset resolver + the reset() symmetry fix (Phase 4).
resolveSubmitDataset(registered as THE actions submit resolver) does a FRESH engine read and applies the ISO Table-239/240 semantics through the new sharedfield-selectionmodule: include-mode NAMES select descendants by FQN dot-prefix (fixing the ResetForm exact-match conformance bug too — Tables 241/242 want subtrees), the NoExport veto is unconditional (diagnosed when explicitly listed), explicitly listed push-buttons/signatures and unsupported/Vshapes are DIAGNOSED (submit-entry-unsupported), never silently dropped, and IncludeNoValueFields yields name-only entries.resetFormActiongains an origin parameter threaded from the executor's ActionContext — a lifecycle/hover ResetForm can no longer launder its recalculation alerts into user origin — and the publicform.reset(key)now rides the SAME shared reset core (one effects batch → refresh → V/C/F recalculation), so a dependent calculated field can no longer go stale through the API door. -
#793 by @bobsingor – The K/V/C/F pipeline rides the shared realm:
FormScriptingControllerkeeps its ordering,event.rcsemantics, two-pass keystroke, overlay, and fault ladder UNCHANGED, but acquires the realm through a transaction port — the actions plugin's per-document host in viewers, or a self-owned standalone host (createFormScriptingHost/ the{ config }constructor arm) for stamp and tests. The snapshot moves INSIDE the transaction boundary (commit(ref, value)/activate(ref, action)/recalculate()— no snapshot parameters).formPlugin({ scripting })is DELETED (the switch isactionsPlugin({ javascript })); the interimrunActivationScriptexecutor and the form-side UI-effect provider (setUiEffectProvider/FormUiEffectProvider) are gone — every script surface flows through the actions port with origin/phase attached, and the newcommitScriptFormEffectssink commits script form effects with engine write + snapshot AND annotation-plane reconciliation in one place.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the translation token, locale vocabulary, and capability types without i18n plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for interaction and platform-feedback tokens, pointer/tool protocols, and capability types without either plugin implementation.
-
#793 by @bobsingor –
activate()accepts an optionalLinkActivateContext; when the actions plugin is installed and the item carries its/Atree, activation delegates to the dispatcher and returns the new{ outcome: 'dispatched', dispatch }arm — named verbs execute and mixed/Nextchains behind links finally run. Without the actions plugin the classic root-projection path is unchanged.Link
/AAhover presence flags now rideLinkNavItemfrom the standalone source so the navigation layer can deliver cursorEnter/cursorExit without waking the annotation behavior plane.Publish a bundle-safe
/contractentry so navigation consumers can depend on the link protocol without pulling in source/effect/plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the metadata token, state, and capability types without event, reducer, or plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the page-edit token and capability type without mutation or plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the redaction token, state, pending-item, and capability protocols without destructive-apply plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the render token, paint-plan vocabulary, settings, and capability types without raster or plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the search token, query validation, results, and capability types without scan, effect, or plugin wiring.
- #793 by @bobsingor – Publish bundle-safe
/contractand/contract/hostentries over the same selection token so sibling features can use selection protocols without gesture, reducer, or plugin wiring./internalretains its framework implementation helpers and makes no bundle-purity promise.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for the shell token, surface state, options, and capability types without reducer or plugin wiring.
-
#793 by @bobsingor – The main stage lens registers
gotoandnamedaction executors with the action engine when present: GoTo destinations reveal through the camera, NextPage/PrevPage/FirstPage/LastPage execute, unknown named verbs report inert.The stage lens also reports placed/current/visible page state and user-versus-programmatic motion causes to the action lifecycle coordinator.
Publish a bundle-safe
/contractentry and a focused/destinationhelper entry so camera consumers do not pull in stage reducer/effect/plugin wiring.
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for stamp-library tokens, assets, previews, configuration, and capability types without import, render, or plugin wiring.
- #793 by @bobsingor – Dynamic stamp evaluation constructs its OWN standalone realm per detached stamp-asset document (
StampScriptingOptions— the opt-in and script observers stay stamp-config; the viewer document's shared host is never involved).
- #793 by @bobsingor – Publish a bundle-safe
/contractentry for view-registry tokens, view state, and capability types without reducer or plugin wiring.
- #793 by @bobsingor – The
ScriptSandbox/ScriptSandboxFactorystructural contract moved to@embedpdf/core-acrojs(cycle fix); this package implements and re-exports it, and threads the new annots plane +annotEffectsthrough the QuickJS bridge unchanged.
-
#793 by @bobsingor – The viewer wires the action engine in:
actionsPlugin()joins the plugin set and the Shell installs the default URI/Print UI adapter. -
#793 by @bobsingor – The chrome save/print commands become the Phase-4 verb owners:
document:downloadruns WS → serialize → DS as ONE queued operation (the WillSave mutations are IN the downloaded bytes; two rapid saves can never interleave) anddocument:printruns WP →window.print()→ DP under the reentrancy latch — both degrading to today's behavior when the actions plugin is absent. -
#793 by @bobsingor – Scripting migrates to
actionsPlugin({ javascript: { enabled: true } })with a bareformPlugin(); the Shell's form scripting provider hook is gone —useActionsUiAdaptercarries everything.
v5.110.3
-
Fix
import()options, circular reexport severity and namespace writes. (by @alexander-akait in #21867) -
Skip ESM interop when require() targets a module outside the concatenation. (by @hai-x in #21884)
-
Fix concatenated
require()in arequire.ensurecallback or a computed request. (by @hai-x in #21907) -
Keep
optimization.minimizea boolean; its options move tominimizeOptions. (by @alexander-akait in #21886) -
Fix mangled exports read through require() and a leaked internal reference. (by @alexander-akait in #21905)
-
Fix
newon a default import of a wrapped CommonJS module. (by @alexander-akait in #21876) -
Throw when a deferred namespace of an async module is forced while it evaluates. (by @alexander-akait in #21871)
-
Do not report a missing export for a name a side-effect-free barrel defers. (by @alexander-akait in #21874)
-
Fix queue, URL scheme, dotenv, HTTP module and persistent cache edge cases. (by @alexander-akait in #21901)
-
Evaluate a deferred import's async dependencies where the import sits. (by @alexander-akait in #21902)
-
Omit ambiguous
export *names from the module namespace. (by @alexander-akait in #21878)
CesiumJS 1.145
1.145 - 2026-09-01
Highlights include:
- Added support for draping clamped vector tile polygons and polylines onto 3D Tiles, with a new heightReference option and matching read-only property on BufferPrimitiveCollection, inherited by BufferPolygonCollection and BufferPolylineCollection. https://github.com/CesiumGS/cesium/pull/13653
- ClippingPolygons now use an algorithm, based on the techniques used for vector tiles, that vastly improves quality across distance scales. Warm-up cost is also modestly decreased. https://github.com/CesiumGS/cesium/pull/13654
- ClippingPolygons now have support for specifying holes (aka islands) within each polygon. This works in inverse clipping workflows as well. https://github.com/CesiumGS/cesium/pull/13660
See the changelog for the complete list of changes.
@astrojs/starlight@0.41.11
-
#4167
32a5e29Thanks @HiDeoo! - Fixes a layout issue and anchor links appearing for hidden headings, e.g. footnote headings, whenmarkdown.headingLinksis enabled or the<AnchorHeading>component is used. -
#4148
cdfafd8Thanks @ematipico! - Optimizes sidebar data generation logic to speed up sites with large sidebars
electron v44.1.1
- Fixed
chrome.tabs.query()returning taburlandtitleto extensions without thetabspermission or host access, aligning withtabs.get. #53354 (Also in 42, 43, 45) - Fixed a renderer crash when an array with a throwing property getter is passed across
contextBridge, and several main/utility-process crashes when option objects passed to Electron APIs contain throwing accessors or Proxy traps. #53331 (Also in 42, 43) - Fixed an intermittent crash at startup on Linux caused by a race between Pango and the main thread initializing fontconfig. #53340 (Also in 43, 45)
- Fixed an issue where an exception thrown by a property getter on an object passed through
contextBridgewas swallowed instead of being thrown back to the caller. #53335 (Also in 43, 45) - Fixed main process crashes when navigating to
http://accessibility/orhttp://devtools/, when an extension background page usednavigator.mediaDevices, and when callingSerialPort.forget()for a disconnected device. #53333 (Also in 43, 45) - Fixed the PDF viewer failing to save an edited PDF with
NotAllowedError: Third party iframes are not allowed to show a file picker. #53328 (Also in 43, 45)