v0.7.0
版本发布时间: 2023-07-17 23:56:53
toeverything/blocksuite最新发布版本:v0.9.0(2023-10-18 20:24:04)
🎉 Announcing BlockSuite 0.7.0! This version is bundled in AFFiNE Client 0.7-beta, incorporating 318 new merged pull requests and an addition of 7 contributors. In the past few weeks, we have significantly enhanced data persistence and whiteboard usability. Feature highlights:
- 📑 We now support subdocument in data model, facilitating async loading of multiple pages (#2948 #3157 #3221 #3082 #3176). This introduces the
page.waitForLoaded()
API and comes with novel provider adaptation support (#3182 #3186 #3193 #3073 #3190 #3200 #3201 #3222 #3213). - 🧩 We've added block spec support (#3175), which serves as the fundamental layer for forthcoming standardized third-party block definitions. This includes a new block-std package (#3164 #3179 #3261 #3297) and a work-in-progress widget API implementation (#3128 #3449 #3307).
- 🎨 We've enhanced whiteboard functionalities, including element rotation support (#2931 #3394), new connector (#3184 #3557 #3099 #3285 #3313 #3390 #3403 #3441 #3517), eraser tool (#3126), in-shape text functionality (#3423 #3386 #3521 #3554 #3573 #3552), a block slicer (#3314 #3343), and a redesigned toolbar (#3230 #3335 #3382 #3465 #3309 #3464 #3380 #3388 #3410 #3262 #3258).
- 🏷️ We've launched new page-level tag support (#3203), which can operate as a cross-page data source, complete with filtering capabilities (#3065).
- 📤 We've incorporated support for exporting to PDF and PNG (#3047 #3072 #3205 #3502 #3534 #3450 #3494).
So far, the primary focus of the BlockSuite project has been on feature-richness. However, with the next major release, we plan to make the editing feature more adaptable with a new API surface. Stay tuned!
Detailed commits (sorted by commit type):
- build: release package
block-std
@himself65 (#3179) - build: fix module exports @himself65 (#3196)
- build: fix output types @himself65 (#3197)
- build(store): compatibility with moduleResolution
Node
@himself65 (#3199) - chore: modify the size of the importIcon and add a hover effect to it @HydenLiu (#3039)
- chore: fix typo @HydenLiu (#3040)
- chore: upgrade pnpm in ci @Saul-Mirone (#3053)
- chore: update database tooltip content @doodlewind (#3067)
- chore: bump version @himself65 (#3120)
- chore: bump lock file version @fourdim (#3154)
- chore: disable note index by default @Flrande (#3334)
- chore: bump playwright @lawvs (#3409)
- chore: bump version @himself65 (#3452)
- chore: adjust delete item color @JimmFly (#3482)
- chore: spread url methods to common utils @QiShaoXuan (#3520)
- chore(edgeless): optimize tooltip text @doodlewind (#3364)
- ci: ignore coverage upload failed @lawvs (#3142)
- ci: add
lit-analyzer
@Flrande (#3168) - docs: update block desc @doodlewind (#3299)
- docs: update CLA @Yukiniro (#3311)
- docs: update CLA @AliceLanniste (#3438)
- docs: update CLA @youhua (#3547)
- docs: sign CLA @joshirakesh (#3564)
- docs: add release note automation script @doodlewind (#3574)
- feat: refactor to support multi-view and filter for database block @zzj3720 (#3010)
- feat: add block on clicking page bottom when necessary @QiShaoXuan (#3028)
- feat: add support for subdocuments @Saul-Mirone (#2948)
- feat: edgeless mode upload multiple images @donteatfriedrice (#3025)
- feat: export page to pdf file @zuoxiaodong0815 (#3047)
- feat: support pressing esc to select blocks @donteatfriedrice (#3035)
- feat: handling left key press for cursor transition from paragraph to page title @tillkwl (#2973)
- feat: support filter for the database block @zzj3720 (#3065)
- feat: export page to image @zuoxiaodong0815 (#3058)
- feat: support for indenting and unindenting multi-level blocks @donteatfriedrice (#3127)
- feat: the mouse pointer can become a gesture when dragging @zzj3720 (#3174)
- feat: optimizing line width icons in edgeless mode @donteatfriedrice (#3195)
- feat: support for adding tags to pages @zzj3720 (#3203)
- feat: use human-readable name in code block @lawvs (#3225)
- feat: support import notion database @fourdim (#3170)
- feat: show format-bar when click drag handler @lawvs (#2694)
- feat: delete empty subpages from import @fourdim (#3266)
- feat: rename bookmark property title to bookmarkTitle @QiShaoXuan (#3278)
- feat: improve page metadata UI @zzj3720 (#3275)
- feat: update edgeless toolbar ui and zoom bar position @donteatfriedrice (#3281)
- feat: hide toolbar when drag element move(#3271) @Yukiniro (#3310)
- feat: supports copying images and cross app pasting @fundon (#3318)
- feat: supports customizing the slash menu @lawvs (#3407)
- feat: modify style of bookmark and editor @QiShaoXuan (#3486)
- feat: add new css variable to control editor side padding @QiShaoXuan (#3491)
- feat(block-std): init package and move event dispatcher to std @Saul-Mirone (#3164)
- feat(block-std): add block spec @Saul-Mirone (#3175)
- feat(block-std): scaffolding new selection manager @Saul-Mirone (#3261)
- feat(blocks): support delete hotkey @Alkaidcc (#2552)
- feat(blocks): add page block service @Saul-Mirone (#3232)
- feat(database): support select option to modify color @zqran (#3015)
- feat(database): row selection uses pointer event instead of drag event @zqran (#3029)
- feat(database): drag inside the database without selecting the block @zqran (#3052)
- feat(database): save the last title being edited @zqran (#3101)
- feat(database): hide the tooltip of "+ New Record" button in edgeless mode @zqran (#3117)
- feat(database): set default width when dragging to create a database in edgeless mode @zqran (#3133)
- feat(database): save the last title being edited when add new column @zqran (#3134)
- feat(database): support modal display @zqran (#3167)
- feat(database): update the style of column-type arrow icon @zqran (#3211)
- feat(database): support
link
column type @zqran (#3187) - feat(database): title column hide
Move Right
@zqran (#3255) - feat(database): temporarily close the modal popup display @zqran (#3257)
- feat(database): update UI style @zqran (#3269)
- feat(database): hide the
Move Left
of the first normal column @zqran (#3354) - feat(database): optimize row selection @zqran (#3383)
- feat(database): remove the selection when deleting the cell @zqran (#3549)
- feat(edgeless): change text default color between themes @Flrande (#3007)
- feat(edgeless): add common math utils @regischen (#3009)
- feat(edgeless): add some utilies @regischen (#3034)
- feat(edgeless): update note border color @Flrande (#3057)
- feat(edgeless): edgless element drag snap @regischen (#2967)
- feat(edgeless): keep viewport state between mode switch @regischen (#3081)
- feat(edgeless): support drag canvas with middle button of mouse @doouding (#3146)
- feat(edgeless): edgeless earser tool @regischen (#3126)
- feat(edgeless): keep brush state in one session @regischen (#3161)
- feat(edgeless): support manage note index and hidden state @Flrande (#3177)
- feat(edgeless): update note ui @Flrande (#3185)
- feat(edgeless): support select element below the hollow shape @doouding (#3212)
- feat(edgeless): add index for other notes when selecting a note @Flrande (#3235)
- feat(edgeless): update toolbar ui @Flrande (#3262)
- feat(edgeless): improve toolbar ui @Flrande (#3258)
- feat(edgeless): support DnD images from outside into editor @fundon (#3123)
- feat(edgeless): support copy as PNG @fundon (#3072)
- feat(edgeless): connector @regischen (#3184)
- feat(edgeless): new edgeless tool bar @donteatfriedrice (#3230)
- feat(edgeless): support rotating shapes @fundon (#2931)
- feat(edgeless): toast message after copying to clipboard @fundon (#3337)
- feat(edgeless): support note clipping @doouding (#3314)
- feat(edgeless): optimize note cut interaction details @doouding (#3343)
- feat(edgeless): add overlay for note and shape tool @donteatfriedrice (#3335)
- feat(edgeless): click to add shape with shape tool @donteatfriedrice (#3382)
- feat(edgeless): support connecting rotated elements @regischen (#3394)
- feat(edgeless): support adding text in shape @Flrande (#3423)
- feat(edgeless): support pasting image in edgeless mode @zuoxiaodong0815 (#3445)
- feat(edgeless): migrate to lineWidthPanel for shape and connector @donteatfriedrice (#3459)
- feat(edgeless): complete canvas text component toolbar @donteatfriedrice (#3465)
- feat(slash-menu): insert database after the current block @zqran (#3102)
- feat(store): clarify different types of providers @himself65 (#3073)
- feat(store): lazy load spaces only when waitForLoaded is called @Saul-Mirone (#3082)
- feat(store): add workspace version in meta @Saul-Mirone (#3107)
- feat(store): let user control subdoc load timing after page meta added @Saul-Mirone (#3157)
- feat(store): init broadcast channel provider @himself65 (#3190)
- feat(virgo): support embed @Flrande (#3041)
- fix: unable to focus on image caption @lawvs (#3000)
- fix: link page menu active state @lawvs (#3038)
- fix: press enter in the middle of parent also indent children list @donteatfriedrice (#3046)
- fix: link page menu import icon @lawvs (#3054)
- fix: export two adjacent bookmarks produce one invalid url @donteatfriedrice (#3055)
- fix: ignore arrow key when select is composing @lawvs (#3076)
- fix: cannot drag to select the block @zqran (#3088)
- fix: exclude the current page from linked page popover @lawvs (#3114)
- fix: can not drop bookmark with new frame in edgeless from block-hub @QiShaoXuan (#3145)
- fix: notion import error on todo @fourdim (#3110)
- fix: handling backspace key press for cursor transition from paragraph to page title @zhengjitf (#3148)
- fix: text cannot be selected in edit mode @zzj3720 (#3173)
- fix: missing update in provider @himself65 (#3213)
- fix: edgeless text error when importing from snapshot @Saul-Mirone (#3229)
- fix: console error exporting PNG/PDF in playground @zuoxiaodong0815 (#3205)
- fix: the incorrect import path @fourdim (#3234)
- fix: image resize after switch page mode @lawvs (#3238)
- fix: remove generic in js @lawvs (#3239)
- fix: bookmark toolbar hidden by the frame in edgeless mode @QiShaoXuan (#3267)
- fix: drag handle indicator z index @himself65 (#3270)
- fix: bookmark block z index @himself65 (#3272)
- fix: typo @lzlme (#3274)
- fix: prepend "https" if url without protocol when bookmark click to open @QiShaoXuan (#3277)
- fix: missing title when exporting markdown @zuoxiaodong0815 (#3273)
- fix: link confirm should change color when link legal @lawvs (#3276)
- fix: missing blob mime types in IndexedDB @fourdim (#3280)
- fix: notion import error on bookmark @fourdim (#3302)
- fix: show widgets in edgeless @lawvs (#3307)
- fix: dark mode export PNG is not consistent with dark mode appearance and hard to read @zuoxiaodong0815 (#3298)
- fix: edgeless toolbar overflow @donteatfriedrice (#3309)
- fix: page tag ui styling @zqran (#3317)
- fix: ignore import blobId for non http url @himself65 (#3325)
- fix: switch to popover z index variable @lawvs (#3328)
- fix: console error when copying as image @fundon (#3331)
- fix: can not insert bookmark in correct position from block hub @QiShaoXuan (#3333)
- fix: todo block display error after importing notion @zuoxiaodong0815 (#3322)
- fix: backlink jump does not work @zzj3720 (#3342)
- fix: toast unstable @lawvs (#3349)
- fix: text before the link incorrectly automatically recognized as part of the link @QiShaoXuan (#3357)
- fix: cursor jump when pasting text @Flrande (#3361)
- fix: hide turn card btn when the link inside database @lawvs (#3397)
- fix: can not paste url to create bookmark @QiShaoXuan (#3399)
- fix: multiple database block selection conflict @zzj3720 (#3414)
- fix: after exporting bookmark, the image is empty @zuoxiaodong0815 (#3417)
- fix: adaptation vertical edgeless-zoom-toolbar @Yukiniro (#3431)
- fix: default language option unmatched @AliceLanniste (#3419)
- fix: display current lang first @lawvs (#3442)
- fix: incorrect highlight for page info and bookmark after exporting @zuoxiaodong0815 (#3443)
- fix: circular import @himself65 (#3451)
- fix: paste multi lines in windows @fourdim (#3455)
- fix: remove windows html format clipboard fragment @fourdim (#3458)
- fix: code block lagging @lawvs (#3462)
- fix: brush icon color should be consistent with selected color @donteatfriedrice (#3464)
- fix: format bar break caretRangeFromPoint @lawvs (#3479)
- fix: lang list z-index in code block @lawvs (#3484)
- fix: redundant editing button on the exported file @zuoxiaodong0815 (#3478)
- fix: style error casused by prettier formatting @QiShaoXuan (#3493)
- fix: cursor position on changing block types @smallnine9 (#3158)
- fix: copy as png @zuoxiaodong0815 (#3502)
- fix: fail to inteligent identify link string @QiShaoXuan (#3519)
- fix: add default image proxy url @zuoxiaodong0815 (#3523)
- fix: don't forcefully change list type @smallnine9 (#3526)
- fix: simple editor error on Hub/Content must have parent @fourdim (#3531)
- fix: inaccurate markdown convert patterns @zhengjitf (#3530)
- fix: copy as PNG paste location is impacted by zoom @donteatfriedrice (#3534)
- fix: bookmark modal style error @QiShaoXuan (#3548)
- fix: the image in the page mode can not be copied and downloaded @zuoxiaodong0815 (#3555)
- fix: file type @himself65 (#3562)
- fix: filter connectors when rotating with multiselect @Yukiniro (#3557)
- fix: register database in simple affine editor @joshirakesh (#3563)
- fix: the image in the page mode can not be copied and downloaded @zuoxiaodong0815 (#3575)
- fix: incorrect icon color in dark mode @JimmFly (#3580)
- fix: ad-hoc the process key with ime @lawvs (#3582)
- fix(block-hub): delete redundant DragIndicator @fundon (#3105)
- fix(block-std): use the host as keyboard control root @lawvs (#3297)
- fix(database): dragging to the number column cannot trigger row selecion @zqran (#3077)
- fix(database): select option icon color @zqran (#3096)
- fix(database): wrong "+ new record" button position @zqran (#3100)
- fix(database): accidentally triggered row selection @zqran (#3129)
- fix(database): scrollbar is missing @zzj3720 (#3265)
- fix(database): save data when number column is out of focus @zqran (#3260)
- fix(database): width adjust preview has wrong position @zzj3720 (#3321)
- fix(database): prevent tag from being selected when compsing @zqran (#3336)
- fix(database): hotkeys do not work @zzj3720 (#3356)
- fix(database): normalize url of link column @zqran (#3373)
- fix(database): enter row level selection on click drag handle @zqran (#3363)
- fix(database): search is too strict @zzj3720 (#3522)
- fix(database): selection will flash when selecting text in title column @zzj3720 (#3524)
- fix(database): unable to
blur
from cell of title column @zzj3720 (#3528) - fix(database): incomplete display of the color list @zzj3720 (#3527)
- fix(database): support pasting code block content @zqran (#3535)
- fix(edgeless): fix intersects method @regischen (#3023)
- fix(edgeless): correct the connecotor's handle behavior @blurname (#3030)
- fix(edgeless): fix delete and select-all when active @regischen (#3027)
- fix(edgeless): fit to screen not working @regischen (#3070)
- fix(edgeless): connectors cannot be activated using letter shortcuts @donteatfriedrice (#3099)
- fix(edgeless): click not remove database @regischen (#3116)
- fix(edgeless): add a new note if all notes are hidden @Flrande (#3215)
- fix(edgeless): note toolbar position @Flrande (#3241)
- fix(edgeless): note index should only appear when selecting a note @Flrande (#3248)
- fix(edgeless): make cursor visible in empty text @Flrande (#3259)
- fix(edgeless): click in page mode will add a new note automatically when no visible note @Flrande (#3263)
- fix(edgeless): edgeless toolbar position not updated when viewport changed @Flrande (#3296)
- fix(edgeless): update toolbar position when selected rect updated @Flrande (#3308)
- fix(edgeless): optimize elbow connector path structure @regischen (#3285)
- fix(edgeless): the selected rect follow snap @regischen (#3312)
- fix(edgeless): fix connector paste bugs @regischen (#3313)
- fix(edgeless): adjust note toolbar width @Flrande (#3341)
- fix(edgeless): multi-selection of shape elements @doouding (#3358)
- fix(edgeless): dragging a block from the middle of a note should not separate t… @doouding (#3360)
- fix(edgeless): note overlay padding issue @donteatfriedrice (#3380)
- fix(edgeless): add z-index in canvas text editor @Flrande (#3386)
- fix(edgeless): edgeless toolbar note-menu rounded border @donteatfriedrice (#3388)
- fix(edgeless): fix incorrect connector color state @regischen (#3390)
- fix(edgeless): optimize note toolbar ui styling @Flrande (#3387)
- fix(edgeless): reset selected blocks after clipping note @doouding (#3396)
- fix(edgeless): fix incorrect connector handle position on zooming @regischen (#3403)
- fix(edgeless): note menu scroll too fast @donteatfriedrice (#3410)
- fix(edgeless): cursor when resizing @fundon (#3411)
- fix(edgeless): lower the note height updating threshold @doouding (#3412)
- fix(edgeless): add size limit for grid gap @Yukiniro (#3425)
- fix(edgeless): connector toolbar stroke border @regischen (#3441)
- fix(edgeless): unexpected history record added when updating note height @doouding (#3424)
- fix(edgeless): missing images when copying as png @fundon (#3450)
- fix(edgeless): incorrect overlay position on panning edgeless viewport @donteatfriedrice (#3422)
- fix(edgeless): scissors z-index bug after bump into AFFiNE @doouding (#3460)
- fix(edgeless): change image caption background to transparent @donteatfriedrice (#3475)
- fix(edgeless): change shape stroke style to none does not work @donteatfriedrice (#3474)
- fix(edgeless): convert surface element to Y data structure only on first level @doouding (#3480)
- fix(edgeless): copy-as-png at different zoom levels @fundon (#3494)
- fix(edgeless): inserted image size should be consistent in different viewport zoom level @donteatfriedrice (#3500)
- fix(edgeless): connector tooltips inconsistency @donteatfriedrice (#3517)
- fix(edgeless): text align in canvas text @Flrande (#3521)
- fix(edgeless): z-index of shape text editor @Flrande (#3554)
- fix(edgeless): text rect should be updated after changed font @Flrande (#3573)
- fix(editor): unable to insert blocks in new page @donteatfriedrice (#3020)
- fix(phasor): bound should be calculated using expand @fundon (#3220)
- fix(phasor): curveFitting should be enabled on ellipse @fundon (#3224)
- fix(phasor): align the text rendered on the canvas with the text in the DOM @Flrande (#3552)
- fix(playground): press cmd+z loss content when first time enter playground @donteatfriedrice (#3017)
- fix(store): ytext in a ymap throws error when cloned by proxy @Saul-Mirone (#3062)
- fix(store): waitForLoaded timeout if doc loaded @Saul-Mirone (#3176)
- fix(store): provider awareness @himself65 (#3186)
- fix(store): broadcast channel @himself65 (#3200)
- fix(store): workspace search @himself65 (#3201)
- fix(store): enable database by default @himself65 (#3219)
- fix(store): bring back remove page for subdoc @Saul-Mirone (#3221)
- fix(store): broadcast channel not defined @himself65 (#3222)
- fix(store): snapshot import and export @Saul-Mirone (#3223)
- fix(store): handle resource load error when importing snapshot @Saul-Mirone (#3227)
- fix(virgo): handle the deletion of selected text @Flrande (#3155)
- refactor: replace
@popperjs/core
with@floating-ui/dom
@zqran (#3021) - refactor: move font
@import
to playground @Flrande (#3026) - refactor: clean selection state @lawvs (#3080)
- refactor: decouple cell render from model @zzj3720 (#3086)
- refactor: move image options inside image block @lawvs (#3111)
- refactor: use transform instead of position on selected-blocks @fundon (#3166)
- refactor: refact toast @lawvs (#3183)
- refactor: switch to block level image selection @lawvs (#3178)
- refactor: remove focused from BlockElement @lawvs (#3214)
- refactor: migrate image resize manager to block level @lawvs (#3218)
- refactor: image upload API @lawvs (#3237)
- refactor: replacing whitespace with
@zzj3720 (#3279) - refactor: migrate slash menu to widget component @lawvs (#3128)
- refactor: remove unused clipboard module @doodlewind (#3300)
- refactor: add import tests for tables and bookmarks @fourdim (#3353)
- refactor: remove deprecated format bar buttom component @lawvs (#3420)
- refactor: migrate linked page to widget @lawvs (#3449)
- refactor: remove active color from icon @lawvs (#3477)
- refactor: support customize linked page @lawvs (#3565)
- refactor(blocks):
frame
->note
@Flrande (#3144) - refactor(blocks):
embed
->image
@Saul-Mirone (#3147) - refactor(blocks): make elements as prop of surface block @Saul-Mirone (#3156)
- refactor(blocks): split code @Flrande (#3228)
- refactor(database): set the cell height after selecting select @zqran (#3037)
- refactor(database): use hover to show modify select color popup & test @zqran (#3036)
- refactor(database): make the cell editing mode consistent @zzj3720 (#3109)
- refactor(database): decouple table render from model @zzj3720 (#3151)
- refactor(edgeless): clean code about color in edgeless @Flrande (#3024)
- refactor(edgeless): switch to
Bound.deserialize
@regischen (#3131) - refactor(edgeless):
mode
->tool
@doodlewind (#3181) - refactor(edgeless): empty note @Flrande (#3210)
- refactor(edgeless): rename children container @Flrande (#3231)
- refactor(edgeless):
surface-text-editor
->edgeless-text-editor
@Flrande (#3389) - refactor(edgeless): remove redundant callback param @fundon (#3439)
- refactor(phasor): close vitest browser mode @Flrande (#3016)
- refactor(phasor): remove unnecessary fields @Flrande (#3050)
- refactor(phasor): manage roughness using constants @Flrande (#3051)
- refactor(phasor): prevent
SurfaceElement
export @Flrande (#3150) - refactor(phasor): copy roughjs @Flrande (#3245)
- refactor(store): remove deprecated tag in schema @Saul-Mirone (#3098)
- refactor(store): remove shim logic for providers @Saul-Mirone (#3182)
- refactor(store): abstract provider implementation @himself65 (#3193)
- refactor(store): optimization and bug fix for proxy @Saul-Mirone (#3209)
- refactor(store): use prefixedId as subdoc's guid @thorseraq (#3359)
- refactor(virgo): rewrite embed support @Flrande (#3504)
- refactor(virgo):
isVRangeEqual
should not accept null values @Flrande (#3560) - revert: circular deps @doodlewind (#3004)
- style: adjust checkbox style @JimmFly (#3240)
- style: adjust link page style and add padding for title @JimmFly (#3290)
- test: add coverage on yjs applyUpdate @himself65 (#3188)
- test(database): add tests for row selection @zqran (#3079)
New Contributors
- @HydenLiu made their first contribution in https://github.com/toeverything/blocksuite/pull/3039
- @doouding made their first contribution in https://github.com/toeverything/blocksuite/pull/3146
- @zhengjitf made their first contribution in https://github.com/toeverything/blocksuite/pull/3148
- @Yukiniro made their first contribution in https://github.com/toeverything/blocksuite/pull/3311
- @AliceLanniste made their first contribution in https://github.com/toeverything/blocksuite/pull/3438
- @youhua made their first contribution in https://github.com/toeverything/blocksuite/pull/3547
- @joshirakesh made their first contribution in https://github.com/toeverything/blocksuite/pull/3564
Full Changelog: https://github.com/toeverything/blocksuite/compare/v0.6.0...v0.7.0