v3.7.6
This release is mostly about speed. Nothing to configure, you get it by updating.
- Capturing the same element again is about a third faster. On our 250-row table benchmark a repeat capture went from 40 ms to 27 ms. Style-heavy pages and deep trees gained between 18% and 27%.
- Pages that change between captures are 4 to 5 times faster. If you capture, something on the page updates, and you capture again (a dashboard, a live preview, an editor), that second capture used to redo most of the work. On the same table, with a change every fourth capture, the total went from 91 ms to 20 ms.
- Big stylesheets no longer slow down small captures. A small card on a page with a 10,000-rule stylesheet took 22 ms to recapture after any change on the page. It now takes 8 ms.
- Recaptures with
compressare about 3 times faster on image-heavy pages (287 ms down to 99 ms on our 19-image demo). - Pages built from many web components that share the same styles produce a much smaller capture and render faster.
Numbers are from Chromium against 3.7.5. Firefox and Safari benefit from the same changes.
From here on I'm working on top of this base to simplify the architecture. SnapDOM has become hard to maintain: the caches that make it fast have piled up on top of each other, and that makes it difficult to avoid regressions and to keep moving forward in a sustainable way.
So the next version will come with a lot of changes in that direction. The goal is the same speed and the same fidelity, on code that is simpler to reason about and safer to change.
- fix(clone): paint
accent-color: autostand-ins in the system accent and draw them closer to the native controls by @Hema2-official in https://github.com/zumerlab/snapdom/pull/561 - fix(toCanvas): keep literal dollar signs in the Safari shadow rewrites by @jackskip22 in https://github.com/zumerlab/snapdom/pull/563
- @Hema2-official made their first contribution in https://github.com/zumerlab/snapdom/pull/561
Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.7.5...v3.7.6
v6.6.2
- 修复文本 HTML 实体转义和解析的重复解码问题,确保
getHtml、setHtml与代码块中的字面量实体可以往返保留。
| Package | Version | Source |
|---|---|---|
@wangeditor-next/basic-modules |
6.6.2 |
Source |
@wangeditor-next/code-highlight |
6.6.2 |
Source |
@wangeditor-next/core |
6.6.2 |
Source |
@wangeditor-next/editor |
6.6.2 |
Source |
@wangeditor-next/editor-for-react |
6.6.2 |
Source |
@wangeditor-next/editor-for-vue |
6.6.2 |
Source |
@wangeditor-next/editor-for-vue2 |
6.6.2 |
Source |
@wangeditor-next/list-module |
6.6.2 |
Source |
@wangeditor-next/plugin-attachment |
6.6.2 |
Source |
@wangeditor-next/plugin-ctrl-enter |
6.6.2 |
Source |
@wangeditor-next/plugin-float-image |
6.6.2 |
Source |
@wangeditor-next/plugin-formula |
6.6.2 |
Source |
@wangeditor-next/plugin-link-card |
6.6.2 |
Source |
@wangeditor-next/plugin-markdown |
6.6.2 |
Source |
@wangeditor-next/plugin-mention |
6.6.2 |
Source |
@wangeditor-next/table-module |
6.6.2 |
Source |
@wangeditor-next/upload-image-module |
6.6.2 |
Source |
@wangeditor-next/video-module |
6.6.2 |
Source |
@wangeditor-next/yjs |
6.6.2 |
Source |
@wangeditor-next/yjs-for-react |
6.6.2 |
Source |
@wangeditor-next/yjs-for-vue |
6.6.2 |
Source |
9.8.1
-
[@mantine/core]ScrollArea: Fix onBottomReached not being called when viewport height is fractional (#9420) -
[@mantine/core]Popover: Fix overlay transition ignoring zero duration (#9419) -
[@mantine/form]Keep errors with their records when reordering list items (#9408) -
[@mantine/core]Color functions: Fix space-separated rgb() colors parsing (#9407) -
[@mantine/hooks]use-disclosure: Fix onOpen/onClose firing multiple times in StrictMode (#9404) -
[@mantine/schedule]WeekView: Fix weekday buttons accessible name not containing visible text (#9401) -
[@mantine/hooks]use-resize-observer: Respect explicit content-box measurements (#9400) -
[@mantine/core]Modal: Disable pointer events on overlay when closed or exiting (#9398) -
[@mantine/core]Combobox: Fix empty group labels rendered when search filters out all group items (#9393) -
[@mantine/dates]DatePickerInput, MonthPickerInput, YearPickerInput, DateTimePicker: Fix dropdown aria-labelledby referencing a missing element (#9390) -
[@mantine/dates]TimePicker: Sync fields and hidden input with clamped value on paste (#9388) -
[@mantine/form]useForm: Fix clearFieldError being dropped when called in the same tick as other updates (#9385) -
[@mantine/schedule]MobileMonthView: Show events on outside days (#9384) -
[@mantine/core]Tabs: Activate tabs on Home and End keys (#9382) -
[@mantine/hooks]use-hotkeys: Normalize physical letter codes case-insensitively (#9381) -
[@mantine/hooks]use-scroller: Update controls on content resize (#9379) -
[@mantine/core]Tour: Fix tooltip going off screen when the target has no room on any side (#9367) -
[@mantine/schedule]ResourcesWeekView: Add compact day-cell layout -
[@mantine/core]PhoneInput: Fix incorrect click behavior on the dropdown trigger button -
[@mantine/core]PhoneInput: Add phone extension support -
[@mantine/core]Table: Fix sticky header borders with spanning cells -
[@mantine/core]PhoneInput: Fix national prefix handling and shared dial code selection -
[@mantine/core]Fixtheme.cursorTypenot affecting some components
editor-plugin-chart@3.0.2
⚠️ This project is no longer maintained.
- Harden chart option parsing to prevent prototype pollution.
- The
@toast-ui/chartdependency range is raised to^4.6.2. Using@toast-ui/chart4.6.2 or later is required, which also includes the chart-side tooltip hardening.
npm install @toast-ui/editor-plugin-chart@3.0.2
editor@3.2.3
⚠️ This project is no longer maintained.
- Harden WYSIWYG rendering against injection of unintended HTML elements.
- No change for normal content. Markdown (
getMarkdown) and HTML (getHTML) output are unchanged.
@toast-ui/react-editor3.2.4 and@toast-ui/vue-editor3.2.4 are released.- They require
@toast-ui/editor3.2.3 or later.
- They require
npm install @toast-ui/editor@3.2.3
# React
npm install @toast-ui/react-editor@3.2.4
# Vue
npm install @toast-ui/vue-editor@3.2.4
Full Changelog: https://github.com/nhn/tui.editor/compare/editor@3.2.2...editor@3.2.3
v11.1.0
- Added loading, error, and no-data modifier class names to
Document,Page, andThumbnailfor state-specific styling (#2120). Thanks, @luisangelrod! - Updated PDF.js to 6.5.438 (#2174).
- Accessibility improvements
- Annotation and form rendering improvements
- Font conversion improvements
- Image decoding improvements
- Pattern rendering improvements
- Performance improvements
- Text selection improvements
- Improved documentation for legacy PDF.js builds and matching worker versions (#2161, #2174).
- Updated Next.js examples (#2039). Thanks, @BetterAndBetterII!
- Fixed positioning of non-rotating annotations on rotated pages.
- Fixed Vite asset copying examples and sample configuration for cMaps, WebAssembly modules, and standard fonts (#2164). Thanks, @Apu-Emdad!
v8.8.0: 📊 Charts Everywhere, Word & RTF Content, Template Conditions
I am pleased to announce the release of officeParser v8.8.0! Word charts are read, every chart keeps its points, levels, axes and formats and reaches every output, Word and RTF content that used to vanish on the way out (embedded objects, equations, tracked deletions, EMF and WMF pictures) is kept, template conditions take filters and compare numbers on request, and spreadsheets keep their formulas.
Thanks to @setthase, @jayhemnani9910, @L4XB, @brennanbutler01, @gezerui888, @nicolasdev and @ceolinwill, whose pull requests and reports are in this release.
- Word charts are read as chart nodes with their data, as in PowerPoint and Excel (#131).
- Every point keeps its place: a blank point no longer shifts values onto the wrong category (#136); multi-level categories stay apart (#139); number formats and shown text are kept (#140); every axis is read, with each series' chart type (#143); scatter and bubble charts keep their X values and sizes (#144).
- Every output writes a chart: Markdown and RTF as their data's table, EPUB as a table, the native PDF engine draws charts in a line of text too. CSV reports the charts it leaves out.
Embedded objects (an Excel sheet, an equation) are shown by their preview picture; RTF tracked deletions are left out, RTF equations are read, RTF embedded objects show their last look; EMF and WMF pictures are kept and typed, and the native PDF engine draws the bitmap they hold. A content control's placeholder prompt is no longer read as text (includePlaceholderText writes it).
{{ if (answer | lower) == "yes" }} // filters in conditions
{{ if status <> "paid" }} // <> reads as !=
numericTextComparison: 'number' compares two number texts as numbers, exactly; by default they compare as text, as before, now with a TEMPLATE_NUMBERS_COMPARED_AS_TEXT warning when ordered. dataNumberSeparators takes a list of ways to read a number and refuses text they read differently.
XLSX cell formulas are read beside their values (CellMetadata.formula, never written into any output); prefixed SpreadsheetML (#153) and entity-encoded values are read; workbooks saved without calculated results keep their cells. Hidden PPTX and ODP slides are marked, and speaker notes no longer end with the notes page's slide number (#137, #138).
- PDF output leaves hidden slides out, with their notes, as it already does hidden sheets;
pdfConfig.printHiddenprints them. - Markdown asks
onNodeonce about a whole line in an HTML table cell or list item, instead of about each part.
- PDF words are no longer glued together where a font's space glyph reads as a tab (#158), as they were since 8.4.0.
- Markdown inside HTML table cells is kept, never shown as a code like
hxt8aparnhc:0. - Equations keep their braces (
\frac{a}{b}, not\fracab) in LaTeX, Markdown and every output that writes them. - Pictures in PDF list items, headings and footnotes are drawn, and each equation written as its LaTeX source is reported.
- Pictures are embedded by what their bytes are (a JPEG named
.pngis drawn), and PPTX, ODP and RTF output no longer fail on a picture whose data is not base64. abortSignalstops reading an archive, and the browser bundles no longer definewindow.setImmediate.- A chart shown at many places, and very large hostile pictures, no longer multiply the output or its memory.
See the full list in the changelog.
npm install officeparser@8.8.0
🔗 Full Changelog: View v8.8.0 details 🔗 Documentation & Visualizer: officeparser.harshankur.com
🛠️ Release v1.5.0
Univer 1.5.0 adds dedicated chart sheets, stacked line charts, and error bars. Pro's free tier now covers more editing and local output workflows. This release also reduces memory use during formula calculation, adds controls for Sheets interactions and Board layout, and improves Office file compatibility.
Give a chart its own tab while keeping its source cells in regular worksheets in the same workbook. Move charts between sheets with undo and redo. With the Sheets Chart Facade loaded, use workbook.insertChartSheet(info, { name, index }) to set the tab name and zero-based position, and getPrimaryChart() to access the main chart. A chart sheet can also continuously fit its main chart to the viewport using zoomToFit. Older snapshots without this setting use fixed zoom. Chart sheets guide
Create stacked and 100% stacked line charts. The chart editor and the builder and live chart APIs also support per-series error bars for basic 2D column, bar, line, and scatter charts. Use setErrorBars() and clearErrorBars() to control direction, end caps, styling, and error amounts. Supported amounts include fixed values, percentages, standard deviation, standard error, and positive or negative values from custom fields in the chart's data source. Scatter charts support separate X and Y error bars. Error bars guide
Use planLayout() to arrange a diagram or adjust connector routes, endpoints, labels, and text fitting. Inspect the returned diagnostics before applying a ready plan with applyLayoutPlan(). Applying a plan is undoable, and the resulting shapes and connectors remain editable. Imported tree branches can be collapsed or expanded with setTreeBranchCollapsed(). Rendered analysis reports issues such as label overflow and text that does not fit, and screenshot bounds can account for rendered paths and labels. Board Facade reference
The new @univerjs-pro/boards-latex-ui package renders LaTeX in Board text. Register UniverBoardsLatexUIPlugin after the Boards UI plugin. Plugin reference
Load @univerjs-pro/slides-ui/facade to check presentation.isTextEditing() or call await presentation.endTextEditingAsync() before a custom save action. Save after it returns true. A return value of false means the draft could not be committed or IME composition is still in progress. Slides Facade reference
Set these options directly on UniverSheetsUIPlugin, or under sheets in UniverSheetsCorePreset.
| Option | Default | Behavior |
|---|---|---|
selectionAnimation |
true |
Animates the desktop selection outline when clicking between cells. The system's reduced-motion preference takes precedence. |
enableFillHandle |
true |
Shows the desktop fill handle. Fill commands and Facade APIs still work when it is hidden. |
warnBeforeDragOverwrite |
true |
Confirms before a dragged range overwrites existing cells. Move validation and undo/redo still apply when the prompt is disabled. |
FBoard.planLayout()acceptsgraph,routes,ports,labels, andtextmodes. Graph layout acceptselementIds,fixedElementIds, andfeedbackConnectorIdsfor scope, plusdirection,layerGap,itemGap,origin, andmaxNodesfor placement. It defaults to horizontal layout, a layer gap of 100, an item gap of 48, and a limit of 500 nodes. Route, port, and label passes can target specificconnectorIds. Graph and text layout acceptmaximumWidthGrowthto cap text-driven widening, with a range of 1–2 and a default of 2. Board layout optionsanalyzeRenderedLayout()acceptsmaximumAutomaticLabelDistancein Board units for checking automatic label placement. The limit is opt-in. Board models also exposeconnectionPositionModefor automatic or fixed connector endpoints,lineJumpfor crossing styles, andlayoutOccupancy: "frame"to allow routes through a container’s interior. UsesetContainerStyle()withtitleOffsetXto offset a container caption, or set a swimlane’sheaderPositiontoleftortop. Rendered layout analysis- Custom canvas floating DOM layers can set
IFloatDom.preventBrowserZoomto suppress browser zoom gestures while forwarding events.eventOptionsconfigures nativepassiveandcapturesettings per wheel or pointer event. Events without an override continue to use React forwarding. Floating DOM layer API
These changes require the corresponding native Exchange artifacts.
- Charts. Preserve dedicated chart sheets in XLSX and supported stacked line chart groupings in XLSX, DOCX, and PPTX.
- PivotTables. Preserve more saved report layouts, merged headers, shared caches, and slicer, timeline, and PivotChart connections. Editable imported reports are stored as PivotTable resources so a second static copy does not appear in worksheet cells. Applications reading those report values should load the snapshot in a compatible frontend and read the rendered report. Re-import the original XLSX if an older snapshot retained a static copy or lost merge information.
- Optional Excel refresh. Set
deferPivotCalculation: trueon a Sheet XLSX export through Exchange Node to let Excel calculate eligible PivotTables on refresh. It defaults tofalse, which exports static results as usual. The supported profile is a new, simple PivotTable with one unfiltered, unsorted text row field, one numeric SUM measure, and grand totals, sourced from a separate two-column worksheet range. The matching Office binding is required for this option. - DOCX equations. Supported legacy Equation Editor and desktop MathType equations import as editable formulas and export as native Word equations. Objects that cannot be converted are preserved as OLE attachments.
- XLSX fidelity and memory. Preserve saved external-link values during offline conversion, including files saved after a failed link refresh. Retain supported custom OOXML metadata, significant whitespace, and implicit intersection formulas. Large exports of plain cell values use less peak memory.
- Native free exports. With the updated adapters, supported XLSX, DOCX, PPTX, and PDF exports can continue with a license watermark after the monthly allowance of 10 successful watermark-free exports. Watermark decisions use the completed export count when a conversion starts, so concurrent conversions can produce additional unwatermarked files.
- Formulas. Reduce calculation memory in JavaScript and native engines and reuse work for repeated criteria and range lookups. Improve Excel compatibility for complex numbers,
ISOWEEKNUM,WEEKNUMwith type 21, andPV. - Sheets. Reuse more rendering work during scrolling, including on mobile. Keep open cell drafts through external updates and preserve whole-row and whole-column references through structural edits. Improve validation dropdowns for merged cells and preserve dropdown ranges when pasting. Prevent PivotTable expansion from overwriting occupied cells and reduce the work needed to check for those cells.
- Editing and accessibility. Improve keyboard access, menu dismissal, RTL separators, gradient stop editing, and IME confirmation in dialogs. Context menu buttons execute their configured
commandId, using the menu item ID when no override is specified. - Collaboration and history. Improve incremental Slides updates and selective undo, and keep Sheets notes attached to the correct cells through concurrent row and column operations. Version comparisons retain a visible sheet.
- Embeds and PDF. Improve embedded editor interactions on mobile and harden PDF tile and annotation rendering. Matching native Office and PDF bindings also fix Worker lifecycle issues.
The deprecated root Worker exports announced in 1.4.0 have been removed. Built-in Worker presets already use the dedicated entries. Update custom browser and Node.js Worker scripts using the following table.
| New entry point | API |
|---|---|
@univerjs/rpc/worker |
UniverRPCWorkerThreadPlugin |
@univerjs/rpc-node/worker |
UniverRPCNodeWorkerPlugin |
@univerjs/sheets-formula/worker |
UniverRemoteSheetsFormulaPlugin |
@univerjs/sheets-filter-ui/worker |
UniverSheetsFilterUIWorkerPlugin |
@univerjs/engine-render/worker |
DocumentLayoutSession |
@univerjs-pro/bases/worker |
UniverRemoteBasesPlugin |
@univerjs-pro/bases-dashboard/worker |
UniverRemoteBaseDashboardPlugin |
@univerjs-pro/sheets-pivot-chart/worker |
UniverSheetsPivotChartWorkerPlugin |
@univerjs/docs/worker |
Register UniverDocsWorkerPlugin in place of startDocsLayoutWorker. |
@univerjs-pro/pdfs-ui/worker |
Register UniverPdfsUIWorkerPlugin in place of startPdfPageThumbnailWorker. |
- Register
UniverBoardsLatexUIPluginexplicitly for Boards. ImportDocsLatexRenderServicefrom@univerjs-pro/docs-latex. Font injection is handled by the renderer, and theinjectRatexFontsexport has been removed. - Replace
IDrawingObjectListItem,IDrawingObjectListPanelLabels, andIDrawingObjectListPanelPropswithIObjectListPanelItem,IObjectListPanelLabels, andIObjectListPanelBasePropsfrom@univerjs/drawing-ui. - Remove direct imports of
CELL_INVERTED_INDEX_CACHEandFORMULA_REF_TO_ARRAY_CACHEfrom@univerjs/engine-formula. Cache ownership now belongs to the formula engine instance.
Upgrade the Univer and Univer Pro packages used by your application together. For self-hosted deployments, update collaboration, rendering, and native Exchange components before writing chart sheets or the new stacked line chart types. Older readers may misinterpret the new data. Use matching native binaries for the Office/PDF changes and the native formula engine.