🎉 Release v0.5.2
🎊 Univer@v0.5.2
🚧 Important Note
This project is still in heavy development, and major API changes are expected. Your feedback is crucial! Please submit issues and suggestions to help us shape the future of Univer.
🚀 Getting Started
If you're eager to explore Univer, check out our getting started documentation.
Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!
📊 Introducing Univer Go Beta!
Important
Univer Go Beta is now available!
We are excited to announce the release of Univer Go, a new desktop application that enables you to build your own spreadsheet and seamlessly integrate with AI agents, databases, and applications.
✨ Fun Built-in Templates
- AI Spreadsheet Translator: Utilize the Univer API in combination with AI to achieve instant multilingual translation of spreadsheet content
- Work Calendar: Generate a work calendar with one click, demonstrating how to use the Univer API to load snapshot data, customize formulas, bind cell events, and utilize the permissions module
- Gantt Chart: Insert any number of Gantt charts into a spreadsheet with a single click, showcasing how to use the Univer API to add formulas, adjust cell styles, merge cells, set conditional formatting, and add data validation
- High-performance Pivot Tables: Quickly create pivot tables and discover how to use the pivot table API in Univer Go to enhance data analysis efficiency
- Tic Tac Toe: Share a link to play Tic-Tac-Toe with friends, learn how to bind Canvas events and implement real-time multiplayer interactions
More templates are waiting for you to explore. Feel free to share your templates with us!
Beta version is now available for both Windows. We welcome community members to test it out and share their feedback to help us improve the platform!
📊 Univer Sheets
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
-
Added
Univer.onDispose
for cleanup work #4218 -
Refactored message box and optimized message box styles #4352
-
Added numerous Facade APIs covering: worksheets, selection, UI, name manager, scrollbar, shortcuts, sorting, network, images, conditional formatting, and more
-
Added Facade API for getting multiple selections #4264
import '@univerjs/sheets/facade';
// get active range list
const activeRangeList = univerAPI.getActiveWorkbook().getActiveRangeList();
import '@univerjs/sheets-ui/facade';
// hide selection
univerAPI.getActiveWorkbook().transparentSelection()
// show selection
univerAPI.getActiveWorkbook().showSelection()
- Added Image Operations Facade API #4322
import '@univerjs/sheets-drawing-ui/facade';
const activeSpreadsheet = univerAPI.getActiveWorkbook();
const activeSheet = activeSpreadsheet.getActiveSheet();
// insert image on A1
activeSheet.insertImage('https://avatars.githubusercontent.com/u/61444807?s=48&v=4', 0, 0);
- Added Network Operations Facade API #4294
import '@univerjs/network/facade';
univerAPI.getNetwork().get("/api.json")
.then(res => console.log('data', res.body))
.catch(e => console.log('error', e))
univerAPI.getNetwork().post("/api.json", { headers: {}, body: {} })
- Added Conditional Formatting Facade API #4300
import '@univerjs/sheets-conditional-format/facade';
const workbook = univerAPI.getActiveWorkbook();
const worksheet = workbook.getActiveSheet();
// set style when cell not empty on A1:A100
const rule = worksheet.createConditionalFormattingRule()
.whenCellNotEmpty()
.setRanges([{ startRow: 0, endRow: 100, startColumn: 0, endColumn: 100 }])
.setItalic(true)
.setBackground('red')
.setFontColor('green')
.build();
worksheet.addConditionalFormattingRule(rule);
- Added Sorting Operations Facade API #4312
import '@univerjs/sheets-sort/facade';
const workbook = univerAPI.getActiveWorkbook();
const worksheet = workbook.getActiveSheet();
const range = worksheet.getRange("A1:B3");
// sort A1:B3 by column B in ascending order
range.sort({column: range.getColumn() + 1 ,ascending:true})
import '@univerjs/ui/facade';
// create a custom menu on ribbon
univerAPI.createMenu({
id: 'custom-menu-id',
title: 'Custom Text',
tooltip:'This tip show on hover.',
action: () => {
console.log('Custom Text');
},
}).appendTo('ribbon.start.others');
// show message
univerAPI.showMessage({ content:"Hello, Univer!" })
- Added Name Manager Facade API #4282
import '@univerjs/sheets/facade';
const workbook = univerAPI.getActiveWorkbook();
workbook.insertDefinedName('MyDefinedName', 'Sheet1!A1');
const definedNames = workbook.getDefinedNames();
- Added Scrollbar Facade API #4290
import '@univerjs/sheets-ui/facade';
// get scroll state
univerAPI.getActiveWorkbook().getActiveSheet().getScrollState();
// scroll Event
univerAPI.getActiveWorkbook().getActiveSheet().onScroll((state) => {
console.log('scroll', state);
});
- Added Range to A1 Notation Facade API #4325
import '@univerjs/sheets/facade';
const range = univerAPI.getActiveWorkbook().getActiveRange().getA1Notation();
// convert range to A1:B3
range.getA1Notation();
- More Facade APIs are being added, please refer to the documentation and API reference for more details
🐞 Bug Fixes
- Fixed border display issues when merging cells #4276
- Fixed memory leak issues #4212 #4213
- Fixed color picker reset functionality #4234
- Fixed hyperlink issues #4223 #4237
- Fixed known formula engine issues #4224 #4245
- Fixed known clipboard issues #4268 #4253
- Fixed known formula auto-fill issues #227
- Fixed
XLOOKUP
formula function #4277 - Fixed
SUMIFS
formula function #4216 - Fixed
PRODUCT
formula function #4273 - Fixed performance issues with data validation for large datasets #4376
💔 Breaking Changes
- Merge Facade API will now force merge without prompting #4246
@univerjs-pro/collaboration-client
has been split into three packages:@univerjs-pro/collaboration-client
@univerjs-pro/collaboration-client-node
@univerjs-pro/collaboration-client-ui
-pnpm i @univerjs-pro/collaboration @univerjs-pro/collaboration-client
+pnpm i @univerjs-pro/collaboration @univerjs-pro/collaboration-client @univerjs-pro/collaboration-client-ui
import { UniverCollaborationClientPlugin } from '@univerjs-pro/collaboration-client';
+import { UniverCollaborationClientUIPlugin } from '@univerjs-pro/collaboration-client-ui';
-import '@univerjs-pro/collaboration-client/lib/index.css';
+import '@univerjs-pro/collaboration-client-ui/lib/index.css';
univer.registerPlugin(UniverCollaborationClientPlugin, {
...
});
+univer.registerPlugin(UniverCollaborationClientUIPlugin);
- Fixed incorrect export names
-import { CollabrationImageIoService } from '@univerjs-pro/collaboration-client'
+import { CollaborationImageIoService } from '@univerjs-pro/collaboration-client'
- Print Facade API adjustments, removed unnecessary return values
interface FWorkSheet {
...
- closePrintDialog(): boolean;
- openPrintDialog(): boolean;
- print(): boolean;
+ closePrintDialog(): void;
+ openPrintDialog(): void;
+ print(): void;
...
}
📢 0.6.0 Preview
Important
The development of version 0.6.0 is currently underway. Starting with this release, Univer will support integration with projects using React@19 . However, this update may introduce breaking changes for users relying on React@16 or Univer UMD builds.
If you have any questions or concerns, please feel free to share your suggestions and feedback via GitHub Issues.
📝 Univer Docs
Fixed known rendering issues #4219
🌐 Univer Server
Fixed known issues and improved service stability
📦 Univer Presets
🎉 Highlights
- All new features and Facade APIs from 0.5.2 are now integrated into Presets by default, just import presets to use them
🐞 Bug Fixes
- Fixed known issues in Node.js environment
💔 Breaking Changes
- Dependencies imported through
@univerjs/presets
should now be imported through specific preset entries:
-import { HTTPService } from '@univerjs/presets'
+import { HTTPService } from '@univerjs/presets/preset-sheets-advanced'
@univerjs-pro/thread-comment-datasource
has been removed from presets, requires separate registration if needed.
🎢 Special Thanks
Special thanks to the following contributors who have made this release possible:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2024-12-28)
Bug Fixes
- better disable selection ---> transparent selection (#4372) (46b403c)
- border stylecache in sheet skeleton (#4276) (af3eece)
- cell link postion should clear primary (#4241) (7fe6a76)
- cell: fix cell format of rich text (#4261) (91c201a)
- chart: fix delete drawing not dispose popup (#4194) (b653da5)
- conditional-formatting: add onlyLocal to formula mutations (#4323) (80e6f37)
- conditional-formatting: memory leak (#4212) (1de083c)
- copy cell should generate html & plain (#4366) (e2edd07)
- copy plain should get cell value (#4344) (7e36387)
- core: url regexper (#4237) (182f7c5)
- cross selection failed (#4226) (cbc58ea)
- definedName: set current sheet name (#4204) (456c4a2)
- drawing: chart can custom backgroud (#4251) (1be91c8)
- dv: detail panel not diposing correctly (#4308) (0a0e723)
- examples: fix external worker not terminated on Univer disposing (#4218) (1cce071)
- facade: calculate the correct number of displayable sheet (#4335) (7fcb50a)
- facade: fix hyperlink update and remove command (#4287) (e60e45f)
- facade: fix setNumberFormat facade (#4202) (9fcbea8)
- fix become rich text when end edit (#4309) (d57f88b)
- fix clipboard when dispose (#4253) (f06ab86)
- fix facade API not implemented (#4259) (d0d264f)
- fix facade not exported (#4285) (ac3cc27)
- fix last memory leak and make memory CI more strict (#4229) (1e0d548)
- fix merge with move bad case (#4274) (e9de991)
- fix paste besides border should keep rich text (#4316) (2763f02)
- formula: fix compare of range and criteria in related formulas (#4216) (ebf12d6)
- formula: fix product formula (#4273) (a9ea9e1)
- formula: fix xlookup formula (#4263) (ae576a7)
- formula: formula auto fill up (#4227) (e7126ae)
- formula: formula dependency (#4224) (6dd4b16)
- formula: indirect dependency (#4245) (ebda4c3)
- formula: some formulas need to be tested in dev (#4116) (4ff30b1)
- merge default plugin configuration with existing config in multiple plugins (#4370) (4900e66)
- mult rows need to be pasted into multiple cells (#4319) (17a92a8)
- network: work in ancestor env (#4296) (2502caf)
- only change the style when have ts (#4365) (57467da)
- paste should clear target cell value (#4268) (3babc2f)
- permission: range selector blur (#4310) (92c7577)
- replace deprecated deepMerge method with merge from @univerjs/core (#4374) (a5949ae)
- row col selection for merged cell (#4345) (b724a46)
- rpc support multiple params (#4271) (1dae650)
- selection expand with shift (#4166) (22facae)
- selection: fix multiple selection use tab not right issue (#4288) (2a01076)
- sheet e2e too long (#4267) (c9c1e5d)
- sheet: resizeObserver disconnect when unmount in sheetBarTabs (#4228) (2df1862)
- sheets-data-validation: data-validation range set error (#4378) (6ed7d84)
- sheets-data-validation: error relayout on ref-range change (#4376) (70f82d0)
- sheets-drawing-ui: add missing
DocsDrawingController
dependency (#4203) (5a13fd1) - sheets-hyper-link-ui: number link popup hover position error (#4223) (3d051ad)
- sheets-hyper-link: hyper-link-facade (#4337) (eb530d8)
- sheets-ui: hover-manager-service memory leak (#4213) (3ce3b27)
- sheets-ui: resolve issue where text color could not be reset (#4234) (39c7d0e)
- sheets-ui: types field not specificed (#4301) (f6c7811)
- some bugs on clipboard facade API (#4332) (4b51483)
- some rendering issues in doc (#4219) (0dd4f3d)
- toolbar width (#4053) (#4208) (f23a024)
- ui: if two messages share the same key, the later should replace the earlier (#4293) (dc60cb3)
- update merge logic to create new objects instead of mutating existing ones (#4375) (d40873d)
- use drawing range not visible range (#4341) (1f2a84b)
Features
- add methods to telemetry service (#4289) (8619410)
- add set scrolling & get scrollInfo & better freeze API for facade (#4290) (1bd1325)
- add sort facade API (#4312) (38be2cf)
- conditional-formatting: add test and jsdoc (#4303) (7abd39d)
- conditional-formatting: support facade api (#4300) (baa5201)
- facade: add facade comments (#4264) (b808f98)
- facade: add range to-string api & fix data-validation api (#4325) (47773f8)
- facade: update data validation facade (#4275) (ff8be23)
- image: facade api (#4322) (b41e499)
- network: add network FacadeAPI (#4294) (0509114)
- sheet: add defined name api (#4282) (fb9bfcd)
- sheet: add facade api (#4279) (50db7a3)
- sheet: add user header part (#4333) (35c55d3)
- sparkline: add render extension (#4233) (96efb3d)
- textsplit: support text split util function (#4302) (f5d1c79)
- ui: add more facade (#4291) (3254073)
- ui: add URL facade (#4305) (a1da277)
- ui: export shortcut facade API (#4324) (ceff4eb)
- ui: support no icon toolbar button (#4328) (2a9bdd3)
- ui: support ui menu facade (#4304) (34fc17d)
- user facade api & onCommented & cellPointerdown & hide selection (#4342) (f13e573)