v0.15.0
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
- chore(blocks): linked doc created events @pengx17 (#7349)
- chore(edgeless): add embedSyncedDoc to splitElements function @L-Sun (#7417)
- feat: use external notification service @pengx17 (#7101)
- feat: add quick search service to insert link universally @Saul-Mirone (#7154)
- feat: use view type in selector for block rendering @Saul-Mirone (#7166)
- feat: add insert link command @Saul-Mirone (#7199)
- feat: add new linked doc with @ @Saul-Mirone (#7200)
- feat: local readonly for doc @Saul-Mirone (#7202)
- feat: prevent editor re render when moving linked docs @Saul-Mirone (#7209)
- feat: readonly synced doc @Saul-Mirone (#7236)
- feat: support seperated doc mode in playground @akumatus (#7394)
- feat: add markdown export from synced doc block @L-Sun (#7405)
- feat(blocks): add notify method to NotificationService @pengx17 (#7160)
- feat(blocks): add abort to notify @pengx17 (#7164)
- feat(blocks): peek view service @pengx17 (#7142)
- feat(blocks): bi-di link peekable support @pengx17 (#7177)
- feat(blocks): add center peek button to embed card toolbar @pengx17 (#7207)
- feat(blocks): add prompt to notification service @pengx17 (#7208)
- feat(blocks): paste affine link as linked ref @pengx17 (#7217)
- feat(blocks): center peek entries @pengx17 (#7275)
- feat(blocks): add element creation events for edgeless @pengx17 (#7297)
- feat(blocks): doc creation event tracking @pengx17 (#7340)
- feat(blocks): peek view api enhancements @pengx17 (#7390)
- feat(blocks): enable peek view for image block @pengx17 (#7424)
- feat(edgeless): support edgeless mode create linked doc @akumatus (#7194)
- feat(page): add prompt pop-up for users to input linked doc title @akumatus (#7224)
- feat(page): add notify toast after linked doc created @akumatus (#7230)
- feat(page): modify UI interaction of embed doc card according to the design draft @akumatus (#7382)
- fix: browser window resize causes image deformation @akumatus (#7043)
- fix: the code block wrap state shoud be persisted in database @akumatus (#7062)
- fix: copy empty code block failure @akumatus (#7074)
- fix: code block highlighting does not automatically respond to dark mode @akumatus (#7071)
- fix: selecting multiple blocks and dragging will show multiple placeholders @akumatus (#7089)
- fix: frame duplicate lost linked doc card @akumatus (#7150)
- fix: more button do not re-render after selected elements changed @akumatus (#7319)
- fix: insert card viewport and selection in edgeless editor @akumatus (#7326)
- fix: linked doc paste can undo as normal link text @Saul-Mirone (#7310)
- fix: add a 500ms delay time before showing the hover toolbar @akumatus (#7338)
- fix: keep connectors after note converted to linked doc @akumatus (#7355)
- fix: embed linked doc failed to load after created @akumatus (#7401)
- fix: disable embed view button if linked document references itself @akumatus (#7410)
- fix: create linked doc from mindmap @akumatus (#7416)
- fix: can not create linked doc from text selection @akumatus (#7419)
- fix: remove hover background of linked doc card @akumatus (#7430)
- fix: doc update time outdated @akumatus (#7434)
- fix: error linked doc card view UI @akumatus (#7439)
- fix: empty linked doc display @akumatus (#7468)
- fix(edgeless): cut behaviour does not completely delete elements @akumatus (#7356)
- fix(page): component not re-render when linked doc mode changes @akumatus (#7367)
- fix(blocks): model of embed card toolbar changed back to the root @L-Sun (#7411)
- fix(blocks): incorrect ui of deleted link doc @L-Sun (#7433)
- feat(playground): add stub impl for notifcation & quick search service @pengx17 (#7157)
- fix(blocks): should clear auto update for aipanel on disconnect @pengx17 (#7175)
- fix(blocks): affine-embed-synced-doc-block peek on dblclick @pengx17 (#7284)
- fix(blocks): slash menu not closable in peek view @pengx17 (#7478)
- test(blocks): add tests for pasting internal links @pengx17 (#7227)
- fix: embed linked doc empty style @Saul-Mirone (#7372)
- fix: bs-588 disable editable contents in synced block @Saul-Mirone (#7435)
- fix: bs-644 nested synced doc can have one depth at most @Saul-Mirone (#7444)
- fix: embed edgeless block resizing @doouding (#7392)
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
- feat: refine mindmap @doouding (#7173)
- feat: refresh surface-ref should refresh canvas content @doouding (#7306)
- fix: mindmap preview @doouding (#7309)
- fix: mindmap issue @doouding (#7335)
- fix: mind map balance layout @doouding (#7388)
- fix: scribbled style shape rendering @doouding (#7420)
- fix(edgeless): legacy mind map rendering @doouding (#7415)
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
- chore(edgeless): simplify data flow of edgeless toolbar hideToolbar @CatsJuice (#7122)
- chore(edgeless): toggle presentation toolbar with css instead @CatsJuice (#7125)
- feat(blocks): new smooth-corner component @CatsJuice (#7181)
- feat(edgeless): separate presentation toolbar from edgeless-toolbar @CatsJuice (#7141)
- feat(edgeless): responsive for edgeless toolbar @CatsJuice (#7182)
- feat(edgeless): add link via edgless-toolbar @CatsJuice (#7264)
- feat(edgeless): responsive for edgeless presentation toolbar @CatsJuice (#7281)
- feat(edgeless): bind mindmap shortcut in edgeless toolbar @CatsJuice (#7318)
- feat(edgeless): add shape shortcut in toolbar @CatsJuice (#7330)
- feat(edgeless): consider dragging a short distance as click for toolbar draggable @CatsJuice (#7393)
- feat(playground): add presentation button in edgeless mode @CatsJuice (#7280)
- fix(edgeless): don't hide presentation toolbar if frame/setting menu opened @CatsJuice (#7128)
- fix(edgeless): adjust edgeless toolbar ui, add tooltips, replace icons @CatsJuice (#7317)
- fix(edgeless): bind shortcuts in toolbar should dispose when tool disconnected @CatsJuice (#7329)
- fix(edgeless): resolve the conflict of drag-and-drop to create shapes, modify toolbar shadow @CatsJuice (#7364)
- fix(edgeless): correct initial location of shape preview when toggled by shortcut 's' @CatsJuice (#7365)
- fix(edgeless): optimize edgeless toolbar active states @CatsJuice (#7380)
- fix(edgeless): edgeless toolbar disappear when hide toolbar in presentation setting @CatsJuice (#7413)
- style(page): adjust heading font-weight and letter-spacing @CatsJuice (#7277)
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
- chore(blocks): export edgeless text spec @Flrande (#7234)
- chore(playground): enable new edgeless text by default in playground @Flrande (#7247)
- feat(edgeless): add edgeless text @Flrande (#7144)
- feat(edgeless): add default color and editing border for edgeless text @Flrande (#7278)
- feat(edgeless): support copy and paste for edgeless text @Flrande (#7324)
- feat(edgeless): add min width for link card in edgeless text @Flrande (#7350)
- feat(edgeless): auto focus when press enter in edgeless text @Flrande (#7360)
- feat(edgeless): auto add paragraph when no editable area in edgeless text @Flrande (#7374)
- feat(edgeless): support edgeless text for new toolbar @Flrande (#7384)
- fix: edgeless selection may disappear when typing on edgeless text @Flrande (#7443)
- fix(blocks): support overlapping of inline styles @Flrande (#6998)
- fix(edgeless): edgeless text should overflow automatically @Flrande (#7235)
- fix(edgeless): align panel not work @Flrande (#7293)
- fix(edgeless): edgeless text rect should automatically update when changing font @Flrande (#7292)
- fix(edgeless): the style of internal text should be reset when modifying the style of edgeless text @Flrande (#7311)
- fix(edgeless): edgeless text not support divider @Flrande (#7325)
- fix(edgeless): need to delete first block in note when it has children @Flrande (#7379)
- fix(edgeless): auto delete empty edgeless text @Flrande (#7385)
- fix(edgeless): can not undo block moving @Flrande (#7400)
- fix(edgeless): disable sync doc in edgeless text @Flrande (#7431)
- fix(edgeless): need to clear selection when focus out in edgeless text @Flrande (#7446)
- fix(edgeless): should not trigger linked doc widget in canvas text @Flrande (#7459)
- fix(edgeless): drag text from toolbar should not change edgeless tool @Flrande (#7465)
- fix(inline): adjust the error range @Flrande (#7225)
- fix(playground): can not change mode @Flrande (#7361)
- fix(playground): flags from params need to be converted @Flrande (#7362)
- fix(presets): export ai action types @Flrande (#7073)
- refactor: clean up edgeless types @Flrande (#7152)
- refactor: remove the deprecated blocksuite-overlay @Flrande (#7212)
- refactor(blocks): move edgeless type and remove useless type @Flrande (#7113)
- refactor(edgeless): remove hard writing edgeless types @Flrande (#7249)
- refactor(edgeless): change edgeless text model role to hub @Flrande (#7327)
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
- chore(blocks): adjust connector shapes order @fundon (#7300)
- feat(blocks): connector label @fundon (#7106)
- chore(blocks): add test cases to connector label with straight shape @fundon (#7155)
- feat(blocks): add quick connect button to element toolbar @fundon (#7167)
- feat(blocks): support connections between groups @fundon (#7192)
- feat(blocks): support connecting different linked doc formats @fundon (#7193)
- feat(blocks): connector supports shortcut keys for label editing @fundon (#7425)
- fix(blocks): reassociate connectors @fundon (#7210)
- fix(blocks): connectors resize and rotate @fundon (#7256)
- fix(blocks): source position when creating a quick connection on a triangle @fundon (#7333)
- fix(blocks): find the closest point on ellipse @fundon (#7337)
- fix(blocks): auto snap to neighboring point @fundon (#7344)
- fix(blocks): default mode in connector tool @fundon (#7399)
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
- chore(blocks): refine slash menu style @L-Sun (#7383)
- refactor(blocks): new slash menu @L-Sun (#7132)
- fix(blocks): error icon and style @L-Sun (#7190)
- fix(blocks): slash category menu can not scroll @L-Sun (#7058)
- fix(blocks): refine tooltip visual effect @L-Sun (#7245)
- fix(blocks): debouce slash menu popover @L-Sun (#7273)
- fix(blocks): support azerty keyboard layout for slashmenu @L-Sun (#7449)
- fix(blocks): ime compatibility of slash menu @L-Sun (#7452)
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
- feat(database): database block row supports attaching notes @zzj3720 (#7103)
- feat(database): link column supports displaying the title of internal doc link @zzj3720 (#7328)
- feat(database): support paste link in title column @zzj3720 (#7348)
- feat(database): support freezing the header @zzj3720 (#7377)
- fix(blocks): remove the & selector @zzj3720 (#7448)
- fix(database): import table from markdown and notion html @zzj3720 (#7091)
- fix(database): duplicate icon of title cell in kanban @zzj3720 (#7102)
- fix(database): create Database Block in List Block @zzj3720 (#7124)
- fix(database): can't get editor-host in detail panel @zzj3720 (#7147)
- fix(database): copy Multi-Select cell should be comma-separated @zzj3720 (#7171)
- fix(database): todo block query incorrectly displayed all blocks @zzj3720 (#7197)
- fix(database): view not found @zzj3720 (#7323)
- fix(database): duplicate column behavior @zzj3720 (#7342)
- fix(database): link convert should skip selection @zzj3720 (#7358)
- fix(database): attachment note drag-handle @zzj3720 (#7387)
- fix(database): database popup is broken in center peek @zzj3720 (#7412)
- fix(database): duplicate title when import doc from snapshot @zzj3720 (#7428)
- fix(database): delete row should refresh view @zzj3720 (#7441)
- fix(database): database rich-text column affect the global contenteditable @zzj3720 (#7447)
- fix(database): unable to close context menu @zzj3720 (#7463)
- fix(database): database block background color @zzj3720 (#7464)
- refactor(database): change import file format in table/group.ts @zzj3720 (#7069)
- refactor(database): render the title of the detail panel using rich-text @zzj3720 (#7134)
- refactor(database): move the database detail panel to the center peek @zzj3720 (#7363)
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
- fix: surface-ref renderer @doouding (#7272)
- fix(edgeless): infinite calling updateIconsColor @doouding (#7060)
- fix(edgeless): note inside frame can be edited @doouding (#7369)
- fix(edgeless): surface-ref rerender timing && style @doouding (#7373)
- fix(edgeless): edgeless portal does not render new added blocks @doouding (#7440)
- perf: avoid recalculate style @doouding (#7044)
- perf: reduce the edgeless rendering overhead @doouding (#7116)
- perf(edgeless): slice first block rendering to multiple parts @doouding (#6992)
- refactor(edgeless): better rendering control using lit scheduleUpdate @doouding (#7068)
- refactor(edgeless): rewrite auto-connect component as a widget @doouding (#7287)
- refactor: use id instead of path in selection @Saul-Mirone (#7032)
- refactor: remove lz in store and use hash instead @Saul-Mirone (#7204)
- refactor: rename path in selection to blockId @Saul-Mirone (#7036)
- fix(store): dead loop on set default props @EYHN (#7112)
- refactor(store): optimize performance when doc meta change @EYHN (#7423)
- perf(blocks): improve canvas rendering when resizing the window @fundon (#7237)
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
- chore(presets): replace loading icon of ai generation @L-Sun (#7031)
- chore(presets): update make-it-real generation icon @L-Sun (#7096)
- feat: support custom heading size with text renderer @donteatfriedrice (#7052)
- feat: refine image toolbar widget @donteatfriedrice (#7075)
- feat: add more ai image actions @donteatfriedrice (#7107)
- feat: add edgeless ai action stages @donteatfriedrice (#7151)
- feat: support delete to hide ai input when no input content @donteatfriedrice (#7174)
- feat: add chat clean history entry @regischen (#7176)
- feat: add ai entry to image block @donteatfriedrice (#7196)
- feat: add code toolbar ai entry @donteatfriedrice (#7220)
- feat: edgeless text as ai action input @donteatfriedrice (#7339)
- feat: remove new image actions flag @donteatfriedrice (#7366)
- feat(blocks): unify session and local storage @regischen (#7005)
- feat(presets): add animation to generating of ai @L-Sun (#7015)
- feat(presets): support chat retry @regischen (#7085)
- feat(presets): support insert above for generating heading action @donteatfriedrice (#7156)
- feat(presets): use notification service to toast ai text copy result @donteatfriedrice (#7163)
- feat(presets): add chat onboarding entry @regischen (#7161)
- feat(presets): chat cards @regischen (#7206)
- feat(presets): inline action response create as new note @donteatfriedrice (#7228)
- feat(presets): support different tracker control for actions @donteatfriedrice (#7285)
- fix: ai action panel scroll bar and width @donteatfriedrice (#7033)
- fix: optimize display mode panel position @donteatfriedrice (#7076)
- fix: edgeless toolbar ai entry text color @donteatfriedrice (#7110)
- fix: set default size and toggle type for ask ai button @donteatfriedrice (#7244)
- fix: edgeless text should support ai text actions @donteatfriedrice (#7341)
- fix: chat panel message margin top and bottom @donteatfriedrice (#7345)
- fix: should only render images when really has attachments @donteatfriedrice (#7346)
- fix: mini mind map temporary collection meta initialization @donteatfriedrice (#7371)
- fix: add ai onboarding feature flag @regischen (#7375)
- fix: refine padding with scrollbar @L-Sun (#7389)
- fix(blocks): update figma url regex @donteatfriedrice (#7011)
- fix(blocks): attachment should check max file size get from service @donteatfriedrice (#7028)
- fix(blocks): fix paste group with connector in it @regischen (#7040)
- fix(blocks): element toolbar should be hidden when resizing element @fundon (#7047)
- fix(blocks): embed-car-caption overflow @L-Sun (#7051)
- fix(blocks): image toolbar auto update position @donteatfriedrice (#7213)
- fix(edgeless): improve ai-panel position @L-Sun (#7006)
- fix(edgeless): incorrect position of make-it-real @L-Sun (#7009)
- fix(edgeless): fix caption missing when paste image in edgeless mode @L-Sun (#7017)
- fix(edgeless): create popper on null element @L-Sun (#7066)
- fix(presets): missing of ai space entry in edgeless @L-Sun (#7054)
- fix(presets): no context in inline ai @L-Sun (#7201)
- fix(presets): ai panel position issues @L-Sun (#7211)
- fix(presets): clear selection after ai panel close in edgeless mode @L-Sun (#7226)
- fix(presets): refine style of divider and focus outline in chat panel @L-Sun (#7308)
- fix(presets): ai export path error @L-Sun (#7357)
- refactor(presets): migrate ai preset to AFFiNE @L-Sun (#7322)
- fix(presets): adjust chat ui @regischen (#7105)
- fix(presets): add retry when ai error @regischen (#7187)
- refactor: use chat context @regischen (#7162)
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)