v0.9.0
版本发布时间: 2023-10-18 20:24:04
toeverything/blocksuite最新发布版本:v0.9.0(2023-10-18 20:24:04)
🔥 The BlockSuite 0.9.0 release incorporates over 300 PRs and welcomes 5 new contributors. Over the past weeks, we have not only continued to ship the functionalities in AFFiNE, but also landed significant enhancements in editor infra.
Editor Infrastructure
Many of the APIs mentioned below have yet to be fully clarified. We'll prioritize updating the documentation in the next release.
-
BlockTransformer
(#4191) establishes a standardized block structure conversion API. This module is beginning to replace the existingContentParser
specific to markdown and HTML. It offers more reliable transformations for third-party data structures and isomorphically supports both clipboard actions and data import/export (#4757). Based on the block transformer, the new markdown adapter (#4624 #4797) implements markdown compatibility targeting block snapshots usingunified
andmdast
. - The new
BlockSnapshot
format (#4609 #4614) allows storing a workspace or page as a JSON block tree. This format, built on the block transformer foundation, serves as an equivalent alternative to CRDT binary and supports packaging it with blob content into a zip-formatted block bundle. - The new
CommandManager
facilitates the registration and reuse of a set of block operations, with support for chained calls, better modeling complex updates to the block tree (#4471 #4626). - The Virgo-based
RichText
component offers out-of-the-box controls for undo/redo and clipboard actions, positioning it as a replacement for the more low-level virgo-input component (#4956). - Existing workspace methods have been segregated based on the addon concept (#4492).
Edgeless Editing Features
- Direct insertion of image blocks at the top level of surface blocks without the need for encapsulation within note blocks is now supported (#4894).
- Frame blocks can be inserted at the surface block top level, serving as a substitute for the previous frame element (#4711).
- Elements can now be connected using curved connectors (#4516).
- A new note can be swiftly created on a selected note (#4881).
- Multi-selection alignment of elements is now available (#4456).
- Transitioned to a transformer-based clipboard (#5023).
Document Editing Features
- Display of YouTube-style embed bookmark block types is now available (#4523).
- Popups featuring secure triangle areas and transitions have been introduced (#4965 #4958).
Database Editing Features
- Group view is now supported (#4727).
- A new filter-usable UI has been introduced (#4339).
- There's support for an independent preview modal (#4628).
Other Notable Updates
- Rendering performance for edgeless has been optimized (#4746 #4939).
- The original phasor package has been integrated into the edgeless editor (#4518).
Detailed Bug Fixes
- fix: remove block by slash menu should remove children @lawvs (#4465)
- fix: some text is missing when exporting to png @zuoxiaodong0815 (#4477)
- fix: format bar flash @lawvs (#4490)
- fix: icon button active styles @lawvs (#4496)
- fix: try add new block first when transform block @lawvs (#4505)
- fix: native wrapper @Saul-Mirone (#4510)
- fix: playground migration @Saul-Mirone (#4513)
- fix: surface data should be shallow y map @Saul-Mirone (#4519)
- fix: attachment extension parsing error @lawvs (#4536)
- fix: hide format bar when non text block selected @lawvs (#4539)
- fix: update import path in tests @fourdim (#4548)
- fix: lost content with duplicate note action in edgeless @zuoxiaodong0815 (#4552)
- fix: keymap should only be triggered without composition @Saul-Mirone (#4554)
- fix: cursor after undo of a block markdown convert should after space @Saul-Mirone (#4555)
- fix: global select all behavior @Saul-Mirone (#4557)
- fix: error button color @lawvs (#4574)
- fix: import notion embed block @zuoxiaodong0815 (#4514)
- fix: import notion embed block @zuoxiaodong0815 (#4587)
- fix: database selection is not registered in edgeless mode @Flrande (#4598)
- fix: consistent font family variable @lzlme (#4606)
- fix: revoke object url after export @Saul-Mirone (#4647)
- fix: image filename in card view @adityash1 (#4583)
- fix: release only generated files @himself65 (#4654)
- fix: flaky edgeless test @Saul-Mirone (#4662)
- fix: copy image in image selection @lawvs (#4669)
- fix: read-only ux @doouding (#4635)
- fix: container keymap vrange can be null @Saul-Mirone (#4679)
- fix: add selection test for markdown inline @Flrande (#4688)
- fix: playground edgeless bug @regischen (#4718)
- fix: hide toolbar on read-only mode @lawvs (#4719)
- fix: auto scroll into view @Flrande (#4715)
- fix: modal-widget style @doouding (#4713)
- fix: edgeless slide menu horizontal scroll @lzlme (#4733)
- fix: playground error log @lawvs (#4760)
- fix: remove unused padding @himself65 (#4766)
- fix: each image should be resizable @donteatfriedrice (#4767)
- fix: input element not works in edgeless mode @Flrande (#4790)
- fix: error when drag image @lawvs (#4791)
- fix: add page bottom drop area for block hub @zqran (#4789)
- fix: wrong behavior in
option + delete
@Flrande (#4804) - fix: v-range incorrect when select child block @Flrande (#4822)
- fix: database cell wrong id after import from snapshot @Saul-Mirone (#4828)
- fix: doc remote selection should be updated when resize @Flrande (#4833)
- fix: image flashing when resizing in edgeless @lawvs (#4849)
- fix: change portal z-index @WBbug (#4882)
- fix: update attachment after theme change @lawvs (#4889)
- fix: disable prettier for ledit template @doouding (#4891)
- fix: fix errors in next.js @yunnian (#4709)
- fix:
asyncGetRichTextByModel
may fail @Flrande (#4885) - fix: improve embed related style @Flrande (#4909)
- fix: block hub z-index @lzlme (#4934)
- fix: useless update data sent when new client joining @Flrande (#4995)
- fix: improve bracket auto complete @lzlme (#4997)
- fix: unexpected bridge display @lawvs (#5044)
- fix: edgeless font family @lzlme (#5049)
- fix: fix and refactor page-level migration associated with surface block @Flrande (#5050)
- fix(database): database can not scroll in edgeless mode @zzj3720 (#4599)
- fix(database): some database drags trigger doc selection @zzj3720 (#4740)
- fix(database): case sensitive for menu labels @zzj3720 (#4744)
- fix(database): structuredClone unable to clone Proxy @zzj3720 (#4756)
- fix(database): moving to ungrouped logic is wrong when group by multi-select @zzj3720 (#4776)
- fix(database): replace selected text content when pasting @zqran (#4817)
- fix(database): dragging from the menu to modal mask should not close the menu @zzj3720 (#4855)
- fix(database): can not edit in detail panel @Flrande (#4856)
- fix(database): don't use variables outside of class @Flrande (#4862)
- fix(database): detail panel close button covered by the top bar @zzj3720 (#4876)
- fix(database): wrong behavior when paste empty string to select column @zzj3720 (#4900)
- fix(database): drag preview style wrong @zzj3720 (#4902)
- fix(database): menu input triggers 1password @zzj3720 (#4910)
- fix(database): drag-handle of column blink when mouse enter right @CatsJuice (#4920)
- fix(database): zoom bug, date format bug and can't open detail panel in edgeless mode @zzj3720 (#5038)
- fix(edgeless): fix connector xywh updates @regischen (#4462)
- fix(edgeless): make tooltip with shortcut conform to design @CatsJuice (#4484)
- fix(edgeless): round the triangle of tooltip @CatsJuice (#4481)
- fix(edgeless): fix frame related bugs @regischen (#4491)
- fix(edgeless): align connector component toolbar ui with design @donteatfriedrice (#4493)
- fix(edgeless): fix elbow connector path @regischen (#4520)
- fix(edgeless): fix connector migration @regischen (#4528)
- fix(edgeless): lost content with duplicate note action in edgeless #4521 @BangKk (#4529)
- fix(edgeless): canvas text editor rotation @LittleSound (#4556)
- fix(edgeless): slicer should be put into
affine-edgeless-layer
@doouding (#4581) - fix(edgeless): edgeless toolbar left part icon activation state @donteatfriedrice (#4600)
- fix(edgeless): press backspace should not delete text or shape element when changing text font size @donteatfriedrice (#4704)
- fix(edgeless): set borderRadius when select single note @WBbug (#4714)
- fix(edgeless): isolate the impact of widgets on the layout @doouding (#4738)
- fix(edgeless): toolbar z-index @doouding (#4749)
- fix(edgeless): double click to add text should use color last selected @donteatfriedrice (#4780)
- fix(edgeless): duplicate remote selection @doouding (#4803)
- fix(edgeless): note does not update when other peers modified note @doouding (#4808)
- fix(edgeless): fix alt drag test @regischen (#4814)
- fix(edgeless): optimize connector enter tangent @regischen (#4908)
- fix(edgeless): unexpected text resize behaviour @doouding (#4912)
- fix(edgeless): close zoom bar when click blank area @donteatfriedrice (#4929)
- fix(edgeless): fix frame add bug @regischen (#5016)
- fix(edgeless): remote selection mispositioning @doouding (#5028)
- fix(edgeless): content shifts when mounting shape text editor @donteatfriedrice (#5029)
- fix(edgeless): viewport move when pen @regischen (#5037)
- fix(edgeless): fix frame title when inputting Chinese use Enter key @luke358 (#5048)
- fix(page): remove children when selecting list and delete @lawvs (#4457)
- fix(page): disable action in image when readonly @lawvs (#4458)
- fix(page): hide drag handle when viewport element resize @donteatfriedrice (#4466)
- fix(page): incorrect top position when in and out drag handle quickly @donteatfriedrice (#4502)
- fix(page): viewport jilter when drag to left-bottom and cannot insert to page bottom from block-hub @donteatfriedrice (#4509)
- fix(page): keyboard move block @lzlme (#4467)
- fix(page): potential prototype-polluting assignment in cells @fourdim (#4562)
- fix(page): dragging area should not select parent and children at the same time @donteatfriedrice (#4572)
- fix(page): optimize dragging area to select blocks @donteatfriedrice (#4582)
- fix(page): drag handle's animation is strange when multi-selected @CatsJuice (#4566)
- fix(page): drag handle blinks when selecting text @donteatfriedrice (#4601)
- fix(page): frame lost during automatic scrolling @donteatfriedrice (#4673)
- fix(page): copy and paste issues #4545 #4619 #4620 @BangKk (#4633)
- fix(page): autoscroll should activate when adding blank lines or bloc… @water-in-stone (#4693)
- fix(page): should consider container offset when updating drop indicator @donteatfriedrice (#4754)
- fix(page): add tail paragraph for blocks with rich text @zqran (#4788)
- fix(page): remove redundant entry in image popup @lawvs (#4783)
- fix(page): prevent dragging the block hub when exceeding the note area @zqran (#4806)
- fix(page): cannot find model by element when moving paragraph with AffineReference @donteatfriedrice (#4831)
- fix(page):
ArrowUp
in the edge of two lines @Flrande (#4836) - fix(page): lang select panel too short @lawvs (#4878)
- fix(page): should not delete children when parent following custom blocks @donteatfriedrice (#4906)
- fix(page): keeping list toggle state @lawvs (#4865)
- fix(page): don't trigger enter actions when using IME @Flrande (#4911)
- fix(page): unexpected behaviour when sync range and text selection @Flrande (#4915)
- fix(page): display of toggle icon of
list-block
@zqran (#4913) - fix(page): delete nested item in the middle should not change the hierarchy of its siblings below @Flrande (#4933)
- fix(page): updated color of the "+ Add" @RajeevDash007 (#4942)
- fix(page): inconsistent behavior when hard enter in the end of line @Flrande (#4953)
- fix(page): should not display bookmark button in link popup when it not supports @Flrande (#4954)
- fix(page): surface element break path calculate in page mode @Flrande (#4948)
- fix(page): inline format should be extended when range is not collapsed @Flrande (#4964)
- fix(page): add
enableMarkdownShortcut
andenableFormat
inrich-text
@Flrande (#4966) - fix(page): clipboard selection missing @Saul-Mirone (#4973)
- fix(page): stop propagation on pasting to the title editor @fourdim (#4975)
- fix(page): press
Backspace
in the start of first line @Flrande (#4985) - fix(page): performance issue from v-range-provider @Flrande (#5004)
- fix(page): unexpected hover style on slash menu @lawvs (#5015)
- fix(page):
remote-selection
make other users can not select text by mouse click @Flrande (#5019) - fix(page): failed to delete text spanning three levels @Flrande (#5022)
- fix(virgo): add
vRangeUpdatedSlot
in v-range provider @Flrande (#4812)
New Contributors
- @CatsJuice made their first contribution in https://github.com/toeverything/blocksuite/pull/4484
- @Niko030303 made their first contribution in https://github.com/toeverything/blocksuite/pull/4482
- @mukeshkuiry made their first contribution in https://github.com/toeverything/blocksuite/pull/4611
- @yunnian made their first contribution in https://github.com/toeverything/blocksuite/pull/4691
- @wfnuser made their first contribution in https://github.com/toeverything/blocksuite/pull/4962
Full Changelog: https://github.com/toeverything/blocksuite/compare/v0.8.0...v0.9.0