BlockSuite v0.15.0 is now released with 380 PRs and 3 new contributors.
It's currently used in Affine 0.15. This release includes a lot of new features, improvements, and bug fixes.
Synced Doc
Now, we can easily embed another document in the current document.
The embedded document will be real-time synced with the original document.
You can also create a new document from the embedded document.
AFFiNE_embed_view.mp4
Contribution Details
MindMap
In version 0.14, we have already enabled AFFiNE AI to create MindMaps on the whiteboard.
Now we are opening up this capability, and you can freely create MindMaps on the edgeless (whiteboard) !
AFFiNE_mindMap.mp4
Contribution Details
New Edgeless Toolbar
We have redesigned the Edgeless toolbar.
It's now more responsive and user-friendly.
And with a lot of fancy animations!
AFFiNE_toolbar.mp4
Contribution Details
New Edgeless Text
We've added a new edgeless block type - Edgeless Text.
It's more powerful and user-friendly than the legacy canvas text.
It supports more child blocks and has a better user experience.
Contribution Details
Quick Connector With Label
You can click the arrow icon on the toolbar of any object on the whiteboard to create a connector.
You can add text labels to the connector.
AFFiNE_connctor.mp4
Contribution Details
New Slash Menu
The new slash menu is more user-friendly and has a better user experience.
It supports more commands and has a better visual effect.
Contribution Details
Database
The database block now allows each row to have a note to record extensive content, and we also support freezing the header
Contribution Details
Edgeless Performance Optimization
We noticed that the Edgeless mode has some performance issues.
We've made a lot of improvements to the Edgeless mode, including rendering optimization, performance improvements, and bug fixes.
Now the Edgeless mode is more stable and faster.
Contribution Details
AI Polishing
We've made a lot of improvements to the AI feature, including new AI actions, filters, better panel position, and more.
Contribution Details
New Contributors
- @akumatus made their first contribution in #7043
- @oliseviche made their first contribution in #7219
- @pzppzz made their first contribution in #7407
Detailed Bug Fixes and Improvements
- chore: clean useless code @Flrande (#7042)
- chore: bump version @fourdim (#7050)
- chore: remove unneed attr in package.json @Saul-Mirone (#7063)
- chore: bump theme version @CatsJuice (#7097)
- chore: remove package manager in package json since its wont support range @Saul-Mirone (#7127)
- chore: remove legacy code @Saul-Mirone (#7170)
- chore: bump version @fourdim (#7183)
- chore: add test cases for groups connections @fundon (#7203)
- chore: add some eslint rules @Saul-Mirone (#7266)
- chore: remove unused packs @Saul-Mirone (#7274)
- chore: apply member ordering rule @Saul-Mirone (#7279)
- chore: fix @ shortcut in edgeless text @Saul-Mirone (#7307)
- chore: remove code owners @Saul-Mirone (#7321)
- chore: revert ai preset @L-Sun (#7347)
- chore: remove ai preset export by default @L-Sun (#7352)
- chore: fix at in legacy canvas text @Saul-Mirone (#7370)
- chore: update CLA @pzppzz (#7407)
- chore: bump theme v0.7.33 @fundon (#7429)
- chore: bump theme @fundon (#7438)
- chore: reduce size of slash menu tooltip @L-Sun (#7437)
- chore(blocks): update edgeless colors @fundon (#7131)
- chore(blocks): improve text menu @fundon (#7223)
- chore(blocks): add filter to size updater @fundon (#7251)
- chore(blocks): update note default settings @fundon (#7303)
- ci: fix oom @Saul-Mirone (#7123)
- ci: enable corepack again @Saul-Mirone (#7241)
- docs: update default vanilla example entry @doodlewind (#7470)
- docs: switch to stackblitz for online examples @doodlewind (#7473)
- feat: add job in adapter @Saul-Mirone (#7238)
- feat(blocks): code block new design @golok727 (#7095)
- feat(blocks): file drop manager supports files from other apps @fundon (#7013)
- feat(blocks): embed html fullscreen toolbar @golok727 (#7138)
- feat(blocks): add caption for code block @golok727 (#7158)
- refactor: add common clone elements logic for copy, clone, duplicate scenes @akumatus (#7153)
- refactor: add DocModeService for doc mode get, set, toogle and observe change @akumatus (#7288)
- feat(blocks): code language list widget @golok727 (#7216)
- feat(blocks): add new
onAbort
API to HoverController @lawvs (#7259) - feat(blocks): no import/export tags in snapshot @EYHN (#7427)
- feat(database): add more cell conversions @golok727 (#7135)
- feat(edgeless): copy and paste blobs in edgeless @fourdim (#7136)
- fix: firefox does not support element.computedStyleMap @golok727 (#7422)
- fix: should not render edgeless only block in embed view @doouding (#7432)
- fix: font weight @doouding (#7445)
- fix: cursor moves out of blocks with multiple lines when using arrow keys @golok727 (#7462)
- fix(blocks): tooltip should be hidden after clicking the button @fundon (#7003)
- fix(blocks): duplicate code block does not include caption @golok727 (#7186)
- fix(blocks): icon button alignment @golok727 (#7189)
- fix(blocks): language list z index @golok727 (#7242)
- fix(blocks): bookmark block error on undo or delete while loading @golok727 (#7276)
- fix(blocks): slash menu unexpected hover style @golok727 (#7290)
- fix(blocks): filterable list unexpected hover style @golok727 (#7291)
- fix(blocks): code block and image block pop-over z-index issues in affine @golok727 (#7409)
- fix(blocks): reference more menu ui issues @golok727 (#7457)
- fix(database): can't blur side detail text cell on clicking empty area @golok727 (#7022)
- fix(database): cant close date picker in database side detail @golok727 (#7023)
- fix(database): number cell alignment @golok727 (#7121)
- fix(database): drag to fill icon moving with cursor @golok727 (#7143)
- fix(database): error on menu search @golok727 (#7312)
- fix(database): firefox does not support element.computedStyleMap @golok727 (#7408)
- fix(database): statistics wrong calculation under groups @golok727 (#7472)
- fix(edgeless): use minimum note width and height @golok727 (#7126)
- fix(edgeless): replace id when surface ref import @fourdim (#7195)
- refactor(blocks): better abstraction for code block toolbar @golok727 (#7149)
- refactor(blocks): extract common components from blocks @golok727 (#7178)
- refactor(blocks): hover controller @golok727 (#7246)
- refactor(blocks): remove redundant text button wrapper @fundon (#7254)
- refactor(blocks): update code font @golok727 (#7271)
- refactor(blocks): move embed card toolbar to root widget container @L-Sun (#7376)
- refactor(blocks): inline code design update @golok727 (#7406)
- refactor(blocks): clean code in reference popup @Flrande (#7442)
- refactor(blocks): fullscreen html toolbar responsive design @golok727 (#7460)
- fix: missing type in job @Saul-Mirone (#7087)
- fix: set page to page list will flush page list @Saul-Mirone (#7343)
- fix: broken playground @Saul-Mirone (#7353)
- feat(examples): bump to latest blocksuite canary @doodlewind (#7455)
- feat(page): support table rich-text in markdown adapter @fourdim (#7077)
- feat(std): add exec method to CommandManager @doouding (#7090)
- feat(store): add flag to disable search indexer @EYHN (#7282)
- feat(store): add flag to disable backlink indexer @EYHN (#7334)
- feat(sync): add blob engine @Flrande (#6937)
- fix: safari compatibility @fundon (#7130)
- fix: remove unexpected debug file @lawvs (#7165)
- fix: code-language-list widget disappear @lawvs (#7248)
- fix: nested frame title @doouding (#7263)
- fix: ignore composing event in slash menu @lawvs (#7351)
- fix: split embed view and schema for web worker compatibility @Flrande (#7391)
- fix: add meta init function @Flrande (#7395)
- fix(blocks): firefox dose not support ComputedStyleMap @L-Sun (#7016)
- fix(blocks): coordinate conversion should consider the offset of the viewport @fundon (#7018)
- fix(blocks): export block spec @Flrande (#7061)
- fix(blocks): root service maybe undefined when service mounted @Flrande (#7072)
- fix(blocks): resolve on file input dialog cancel @shvixxl (#6950)
- fix(blocks): refine element toolbar ui @fundon (#7064)
- fix(blocks): connector endpoint should follow rotation of ellipse @fundon (#7108)
- fix(blocks): should reset shape text when text is empty @fundon (#7109)
- fix(blocks): should not update element toolbar when dragging @fundon (#7119)
- fix(blocks): no need to use css tag @fundon (#7129)
- fix(blocks): delete redundant divier on embed card buttons @fundon (#7145)
- fix(blocks): should update layout icon when changing mindmap layout @fundon (#7169)
- fix(blocks): fix typo @fundon (#7180)
- fix(blocks): prevent default on pointer down with format bar @shvixxl (#7185)
- fix(blocks): lazy get viewport element on rich-text @fundon (#7191)
- fix(blocks): toolbar should not be displayed in synced doc block @fundon (#7179)
- fix(blocks): canvas flickering issue when resizing window @fundon (#7205)
- fix(blocks): no proxy required to fetch blob @fundon (#7218)
- fix(blocks): merge blocks when cut @fourdim (#7229)
- fix(blocks): markdown todo export @fourdim (#7231)
- fix(blocks): curve intersects @fundon (#7232)
- fix(blocks): edgeless-root-block's sub-elements should not be selected on safari @fundon (#7250)
- fix(blocks): should update line width @fundon (#7253)
- fix(blocks): remove redundant dividers @fundon (#7261)
- fix(blocks): add extra height to page mode @fourdim (#7252)
- fix(blocks): should update card style on attachment toolbar @fundon (#7299)
- fix(blocks): inline link text overflow in note @fundon (#7302)
- fix(blocks): remove redundant dividers on more button @fundon (#7301)
- fix(blocks): linked doc card custom style @donteatfriedrice (#7359)
- fix(blocks): fix web worker compatibility @EYHN (#7396)
- fix(blocks): database title affect the global contenteditable @Flrande (#7418)
- fix(blocks): bookmark should not has min-width when it is in surface @Flrande (#7421)
- fix(edgeless): note blocks not ordered because of missing images @fourdim (#7111)
- fix(edgeless): missing rerender during stacked canvases updates @oliseviche (#7219)
- fix(edgeless): dragging area of shape tool is null @L-Sun (#7474)
- fix(examples): provider init pattern and sqlite deps @doodlewind (#7469)
- fix(inline): spell checker @fourdim (#7294)
- fix(page): add linked page support and fix code escaping @fourdim (#7038)
- fix(page): add clipboard adapter size limit @fourdim (#7094)
- fix(page): tune clipboard file size limit @fourdim (#7120)
- fix(presets): code block in text renderer should support to be wrapped @donteatfriedrice (#7041)
- fix(presets): new image actions should display in chat panel @donteatfriedrice (#7222)
- fix(presets): custom toolbar ai panel not toggle in AFFiNE @donteatfriedrice (#7262)
- fix(presets): get image blob from selection @donteatfriedrice (#7286)
- fix(presets): chat input max-height @fundon (#7283)
- fix(presets): outline display mode panel style @donteatfriedrice (#7381)
- fix(sync): should await Blob arrayBuffer @fundon (#7137)
- refactor: cleanup block specs @Flrande (#7039)
- refactor: using renderSpecPortal instead of renderModel @donteatfriedrice (#7046)
- refactor: migrate decorator from stage2 to stage3 @Saul-Mirone (#7088)
- refactor: use createLitPortal for toggle zoom button @donteatfriedrice (#7239)
- refactor(blocks): buttons on element toolbar @fundon (#7048)
- refactor(edgeless): use public cdn for font by default @Flrande (#7045)
- refactor(edgeless): remove hard writing edgeless tool types @L-Sun (#7296)
- refactor(edgeless): optimize clipboard code structure @Flrande (#7320)
- refactor(presets): export ai block spec instead of patch function @Flrande (#7065)
- test: fix flaky @Saul-Mirone (#7240)
- test: fix flaky @L-Sun (#7295)
- test: fix flaky test @Saul-Mirone (#7368)