What's Changed
- build(ios): remove build mac(design for iPad) destination by @hwangdev97 in #11983
- refactor(core): use the websearch parameters passed in by the front-end by @akumatus in #11989
- chore: bump up oxlint version to v0.16.8 by @renovate in #12011
- chore: bump up eslint-plugin-unicorn version to v59 by @renovate in #12013
- feat(server): add doc meta for ignored docs by @darkskygit in #12021
- chore: add crossorigin to resource tags by @forehalo in #12031
- feat(core): use claude-3-7-sonnet as basic chat model by @akumatus in #12036
- fix(editor): edgeless note duplicated from embed-doc should be above other elements by @L-Sun in #12028
- fix(core): skip onboarding in e2e tests by @akumatus in #12044
- feat(editor): viewport overlay widget extension by @Saul-Mirone in #12035
- feat(editor): edgeless zoom toolbar widget extension by @Saul-Mirone in #12037
- refact(editor): clipboard config should be in foundation by @Saul-Mirone in #12038
- refactor(editor): improve attachment block UI and error handling by @fundon in #11763
- chore: bump up electron version to v36 by @renovate in #12047
- feat(editor): add page dragging area widget extension by @Saul-Mirone in #12045
- perf(editor): fallback to placeholder for canvas text by @doodlewind in #12033
- feat(editor): gfx link extension by @Saul-Mirone in #12046
- refactor(editor): remove page root service by @Saul-Mirone in #12048
- fix(editor): improve viewport of surface ref block by @L-Sun in #12014
- fix(electron): shared-worker api binding by @pengx17 in #11991
- feat(editor): add experimental feature citation by @donteatfriedrice in #11984
- fix(server): read the .env file on time by @congzhou09 in #12051
- refactor(editor): cleanup dead code by @Saul-Mirone in #12049
- refactor(editor): file size limit service by @fundon in #12026
- refactor(editor): use default fallback placeholder for turbo renderer by @doodlewind in #12059
- test(editor): reduce flaky test in turbo renderer by @doodlewind in #12053
- feat(editor): root block extension by @Saul-Mirone in #12063
- chore: bump up all non-major npm dependencies by @renovate in #11994
- refactor(editor): support virtual scroll for table view of database block by @zzj3720 in #11642
- fix(editor): should keep order of note after sliced by scissor by @L-Sun in #12034
- feat(editor): fragment extensions by @Saul-Mirone in #12066
- fix(editor): revert bg color of attachments when loading or error states by @fundon in #12061
- feat(editor): improve visibility of hidden content of edgeless note by @L-Sun in #12068
- fix(nbstore): fix cloud blob in ios and android by @EYHN in #11938
- feat(core): replace onboarding template by @EYHN in #11874
- fix(nbstore): wrong order of socketio transports by @forehalo in #12077
- feat(editor): header of edgeless embed doc by @L-Sun in #12029
- feat(editor): add max height to edgeless embed doc by @L-Sun in #12030
- fix(editor): adjust some ui style of embed card by @L-Sun in #12055
- feat(ios): add app tracking transparency permission by @EYHN in #12078
- fix(core): reset ai chat model to gpt-4.1 by @akumatus in #12081
- feat(editor): autofill turn-into-linked-doc modal with fisrt paragraph by @L-Sun in #12032
- refactor(editor): cleanup dead code by @Saul-Mirone in #12072
- feat(editor): add callout block markdown adapter by @donteatfriedrice in #12070
- feat(server): delay subscription after invitation accepted or approved by @forehalo in #11992
- refactor(editor): get loading icon with theme by @fundon in #12079
- feat(server): fix web search by @darkskygit in #12087
- feat(server): improve user preferred language detect by @darkskygit in #12084
- feat(editor): add embed doc block extension by @Saul-Mirone in #12090
- feat(server): support query overcapacity member count of workspace by @forehalo in #12050
- test(server): output low quality image in ci test by @darkskygit in #12056
- fix(editor): fix color of the circle on loading icon by @fundon in #12092
- feat(server): docs pagination by @forehalo in #12086
- feat(editor): add local link preview data for bookmark block by @donteatfriedrice in #12085
- fix(editor): markdown url preprocessor should fully encode partial encoded url by @donteatfriedrice in #12091
- feat(editor): make height of edgeless embed doc to fit content by @L-Sun in #12089
- refactor(editor): improve implementation of lit adapter by @Saul-Mirone in #12101
- chore: bump up vite version to v6.3.4 [SECURITY] by @renovate in #12103
- chore: bump up react-resizable-panels version to v3 by @renovate in #12114
- chore: bump up oxlint version to v0.16.9 by @renovate in #12122
- chore: bump up nodemailer version to v7 by @renovate in #12124
- refactor(editor): use extension level config by @Saul-Mirone in #12110
- refactor(editor): remove gfx tool global type by @Saul-Mirone in #12116
- refactor(editor): remove global gfx tool types by @Saul-Mirone in #12119
- fix(editor): missing citation entry by @Saul-Mirone in #12129
- chore: bump up react-error-boundary version to v6 by @renovate in #12125
- refactor(editor): move history from doc to store by @Saul-Mirone in #12131
- test(editor): reduce flaky timing in turbo renderer tests by @doodlewind in #12082
- fix(electron): adjust switch tab shortcuts on Mac by @pengx17 in #12060
- fix(editor): userProvider should be optional by @L-Sun in #12137
- fix(core): add back missing i18n key by @pengx17 in #12088
- fix(editor): make selected and out-of-viewport block active by @L-Sun in #12135
- chore(y-octo): migrate away depracated JsExternal API by @Brooooooklyn in #12130
- refactor(editor): move block yjs listener to store by @Saul-Mirone in #12140
- feat(android): support self-host & multi channels by @aki-chang-dev in #12095
- fix(editor): can not delete code block with delete keyboard by @doufa in #11988
- refactor(editor): remove unused code by @Saul-Mirone in #12142
- feat(editor): support preview mode in code block by @Flrande in #11805
- feat(electron): add welcome page for meetings by @pengx17 in #12042
- chore(core): update onboarding snapshot by @pengx17 in #12138
- test(core): fix chat with tag falky by @darkskygit in #12141
- chore(server): dont use default export on @prisma/instrumentation by @fengmk2 in #12148
- chore(server): hoist deps by @forehalo in #12145
- chore: bump up all non-major npm dependencies by @renovate in #12067
- chore: bump up all non-major npm dependencies by @renovate in #12151
- chore: bump up all non-major npm dependencies by @renovate in #12157
- test(editor): revert timeout condition in turbo renderer by @doodlewind in #12159
- fix(nbstore): improve blob size error handling with human-readable limit by @fundon in #12027
- feat(editor): add resource controller by @fundon in #12121
- chore(editor): add retry for flaky test by @doodlewind in #12143
- chore: bump up is-svg version to v6 by @renovate in #12071
- fix(nbstore): should not force throw error by @fundon in #12152
- fix(editor): add credentialless attribute to iframe for COEP compliance by @donteatfriedrice in #12161
- feat(ios): add app track usage description by @EYHN in #12160
- fix(editor): improve image block upload and download states by @fundon in #12017
- refactor(editor): introduce store container to make implement doc easier by @Saul-Mirone in #12146
- fix(core): cannot input space at the beginning of a blank paragraph by @yoyoyohamapi in #12166
- fix(core): cannot space inside ai panel input by @yoyoyohamapi in #12167
- fix(editor): switch view is not allowed during upload by @fundon in #12018
- fix(editor): footnote and citation icon url should be built with image proxy by @donteatfriedrice in #12169
- chore(editor): adjust embed synced doc ui by @L-Sun in #12162
- refactor(editor): doc as store extension by @Saul-Mirone in #12170
- refactor(editor): rename model.doc to store by @Saul-Mirone in #12172
- fix(editor): attachment size in embed view by @fundon in #12177
- feat(core): add o4-mini model by @akumatus in #12175
- chore(editor): skip flaky test case in turbo renderer by @doodlewind in #12178
- chore: Lock file maintenance by @renovate in #11832
- refactor(editor): rename doc to store on block components by @Saul-Mirone in #12173
- chore: bump up opentelemetry by @renovate in #11629
- chore: bump up @googleapis/androidpublisher version to v27 by @renovate in #11899
- chore: bump up apollographql/apollo-ios version to v1.21.0 by @renovate in #12076
- feat(core): mark reasoning summary as markdown callout by @akumatus in #12176
- chore: bump up all non-major npm dependencies by @renovate in #12174
- refactor(core): implement doc created/updated by service by @EYHN in #12150
- chore(server): typo fix on cpu.doc by @fengmk2 in #12189
- feat(core): add collection rules module by @EYHN in #11683
- fix(core): public user avatar label mis-alignment by @pengx17 in #12057
- fix(nbstore): update workspace blob quota query by @EYHN in #12191
- refactor(core): use overcapacityMemberCount for quota checking instead of calculating the difference by @JimmFly in #12117
- feat(editor): insert embed doc with quick search by default by @L-Sun in #12165
- feat(core): migration for created by and updated by fields by @EYHN in #12171
- feat(editor): add created-time and created-by property for database block by @zzj3720 in #12156
- fix(core): ai replace selection by @yoyoyohamapi in #11875
- fix(editor): disable html preview when no cross-origin isolated by @Flrande in #12192
- feat(component): grouped masonry by @CatsJuice in #11958
- fix(core): hide onboarding until the ai features are stable by @yoyoyohamapi in #12198
- fix(core): ai input cannot scroll by @yoyoyohamapi in #12184
- feat(server): rerank for matching by @darkskygit in #12039
- feat(server): expose threshold by @darkskygit in #12023
- feat(server): support installable license by @forehalo in #12181
- feat(core): new all docs list ui by @CatsJuice in #12102
- fix(editor): array proxy splice will cause too large yjs update by @Saul-Mirone in #12201
- feat(server): permission check for workspace doc match by @darkskygit in #12139
- feat(server): workspace doc update event from indexer by @darkskygit in #12186
- feat(core): new all docs header by @CatsJuice in #12182
- fix(editor): database scroll regression on mobile safari by @doodlewind in #12203
- refactor(editor): replace @vanilla-extract/css with @emotion/css by @zzj3720 in #12195
- feat(editor): implement view extension manager with builder pattern by @Saul-Mirone in #12193
- chore: bump up oxlint version to v0.16.10 by @renovate in #12206
- chore(core): pdf viewer is enabled by default by @fundon in #12207
- perf(core): optimize rendering of all docs by @CatsJuice in #12188
- feat(editor): improve status display in attachment embed view by @fundon in #12180
- feat(editor): improve status display in image block by @fundon in #12194
- chore: bump up lint-staged version to v16 by @renovate in #12217
- refactor(editor): split turbo renderer and cloud view builder by @Saul-Mirone in #12213
- refactor(editor): history as a store extension by @Saul-Mirone in #12214
- feat(core): add default filter rules for all docs by @EYHN in #12197
- chore: Lock file maintenance by @renovate in #12223
- chore(server): add server genconfig git status check by @fengmk2 in #12202
- fix(core): cannot abort AI chat immediately after sending a message by @akumatus in #12209
- fix(editor): add fallback tip when no cross-origin isolated by @Flrande in #12204
- fix(editor): add width height for html preview by @Flrande in #12229
- feat(editor): feature flag store extension builder by @Saul-Mirone in #12235
- refactor(editor): extract slider component by @L-Sun in #12210
- feat(editor): group configuration of note styles to panel from toolbar by @L-Sun in #12230
- chore(editor): add telemetry for note, embed doc and linked doc by @L-Sun in #12234
- refactor(editor): extract mobile extension builder by @Saul-Mirone in #12239
- refactor(editor): extract ai extension builder by @Saul-Mirone in #12240
- feat(admin): create user with password by @JimmFly in #12112
- refactor(core): use workspace role query instead of isOwner query by @JimmFly in #12118
- refactor(editor): add cache extension for link preview service by @donteatfriedrice in #12196
- fix(core): meeting settings issues by @pengx17 in #12226
- fix(electron): streaming audio encoding not working by @pengx17 in #12231
- fix(electron): recorded audio is not correctly rendered after saved as attachment by @pengx17 in #12232
- fix(editor): notion text adapter should handle text without styles correctly by @donteatfriedrice in #12248
- refactor(core): refactor collection to use new filter system by @EYHN in #12228
- feat(electron): better recording quality after device change by @pengx17 in #12246
- refactor(electron): use mp4 container instead of webm for encoded audio by @pengx17 in #12247
- fix(mobile): do not show audio block for mobile by @pengx17 in #12249
- feat(core): add optionalModels field in AiPrompt and support the front-end modelId param by @akumatus in #12224
- feat(core): switch reasoning models by front-end by @akumatus in #12225
- refactor(editor): config the extension provider directly by @Saul-Mirone in #12252
- refactor(editor): rewrite resize and rotate by @doouding in #12054
- refactor(editor): replace-id middlware by @fundon in #12250
- refactor(editor): remove the legacy common view extension by @Saul-Mirone in #12255
- feat(editor): add grouping support for member property of the database block by @zzj3720 in #12243
- fix(core): ai find-actions falky by @yoyoyohamapi in #12257
- refactor(editor): finish the extension provider migration by @Saul-Mirone in #12259
- fix(editor): support relative image reference path when importing zip with images by @donteatfriedrice in #12264
- fix(core): skip undefined arg for collection migration by @CatsJuice in #12265
- feat(core): show stop modal if clickoutside during generating by @yoyoyohamapi in #12227
- chore(editor): adjust size of synced doc by @L-Sun in #12163
- fix(core): improve mindmap e2e stability by @darkskygit in #12267
- feat(server): improve context metadata & matching by @darkskygit in #12064
- feat(core): adjust collection rules by @EYHN in #12268
- feat(editor): update code block ui by @Flrande in #12254
- refactor(editor): add dom renderer entry for canvas element by @doodlewind in #12149
- chore: bump up nestjs to v11.1.1 by @renovate in #12272
- fix(editor): suface component can be null by @Saul-Mirone in #12270
- feat(server): update prompts by @darkskygit in #12244
- feat(core): add pinned collections to all docs by @EYHN in #12269
- docs: add ClawCloud Run button & fix documentation links by @ClawCloud-Ron in #12280
- fix: drag handler hover rect state is not cleaned by @doouding in #11868
- fix: peekable in edgeless mode by @doouding in #12271
- refactor(editor): cleanup dead code by @Saul-Mirone in #12281
- feat(server): add cloud indexer with Elasticsearch and Manticoresearch providers by @fengmk2 in #11835
- feat(common): add blocksuite reader lib by @fengmk2 in #11955
- feat(server): handle workspace doc updates by @fengmk2 in #11937
- fix(editor): remove the fixation of created-by and created-time by @zzj3720 in #12260
- fix(editor): should preserve format in
when importing html by @donteatfriedrice in #12275
- feat(editor): provide callout markdown export options middleware by @donteatfriedrice in #12283
- fix(editor): canvas element missing rotate during zooming by @doodlewind in #12279
- fix(editor): ui bugs of database block by @zzj3720 in #12285
- chore(server): fix missing indexer service on ci by @fengmk2 in #12291
- fix(editor): use persisted state for presentation mode background config by @doodlewind in #12293
- fix(editor): adjustment of scaled and folded synced doc by @L-Sun in #12294
- chore: bump up Node.js to v22.15.1 by @renovate in #12286
- refactor(editor): extract selected rect widget by @Saul-Mirone in #12290
- feat(core): add get session graphql api by @akumatus in #12237
- feat(core): add exa url crawl tool by @akumatus in #12277
- chore(server): separate elasticsearch to run independently by @fengmk2 in #12299
- feat(core): add ai model switch ui by @akumatus in #12266
- test(core): embedding settings by @yoyoyohamapi in #11554
- fix(server): self hosted config by @darkskygit in #12253
- chore(server): improve ignored docs list & match by @darkskygit in #12307
- feat(core): workspace embedding settings by @yoyoyohamapi in #11801
- fix: connector label editing by @doouding in #12282
- refactor(editor): extract widgets by @Saul-Mirone in #12304
- feat(editor): add line number display option for code block by @Flrande in #12305
- fix(editor): mid button drag in presentation mode by @doodlewind in #12309
- feat(editor): support border radius for shape dom renderer by @doodlewind in #12326
- fix: connector issues by @doouding in #12308
- fix(server): add AFFINE_INDEXER_SEARCH_ENDPOINT to self-host compose.yml by @fengmk2 in #12324
- chore: bump up oxlint version to v0.16.11 by @renovate in #12335
- fix(editor): should update image size field by @fundon in #12274
- refactor(editor): optimize pasting process of attachments and images by @fundon in #12276
- chore(editor): add tracking events to attachments by @fundon in #12317
- refactor(editor): cleanup effects export by @Saul-Mirone in #12312
- fix(core): should use AttachmentViewerView in split view and standalone page by @fundon in #12323
- feat(core): new doc list for collection detail by @CatsJuice in #12278
- feat(core): new docs list for tag detail by @CatsJuice in #12298
- feat(server): filter docs by access role by @fengmk2 in #12311
- feat(core): edit and delete pinned collections in all docs by @EYHN in #12296
- feat(server): auto index all workspaces to indexer by @fengmk2 in #12205
- feat(nbstore): add cloud indexer storage by @fengmk2 in #12245
- fix(editor): flaky import notion html image unit test by @donteatfriedrice in #12354
- chore(server): switch to prometheus by @forehalo in #12352
- chore(editor): improve index of new edgeless note from dnd by @L-Sun in #12357
- feat(core): support save and restore display preference in all docs by @EYHN in #12315
- feat(core): add system property types support by @EYHN in #12332
- fix(server): seat not allocated when new user invited to licensed workspace by @forehalo in #12322
- chore(core): switch position of collection and tag section in sidebar by @forehalo in #12327
- chore: remove telegram community by @JimmFly in #12292
- feat(core): add team badge to user info menu by @JimmFly in #12144
- fix(editor): edgeless selected rect should be below the edgeless toolbar by @L-Sun in #12370
- fix: selection rect should reflect viewport change by @doouding in #12355
- fix(editor): incorrect height calculation of folded embed doc by @L-Sun in #12348
- fix(editor): text color on toolbar when connector is selected by @fundon in #12360
- chore(editor): change edgeless-text default color to black by @fundon in #12361
- fix(editor): should add HTTP protocol into link automatically by @fundon in #11934
- fix(core): ai user message word break failed by @yoyoyohamapi in #12347
- chore: bump up multer version to v2 by @renovate in #12374
- feat(core): add default display preference by @EYHN in #12333
- feat(core): allow editing calendar name by @CatsJuice in #12251
- fix(server): avoid job fail if mail is not configured by @forehalo in #12306
- fix(server): add stemmer filter by @fengmk2 in #12358
- chore(server): support elasticsearch alias by @fengmk2 in #12363
- chore(server): add prefix to indexer jobId by @fengmk2 in #12369
- chore: bump up apple/swift-collections version to from: "1.2.0" by @renovate in #12381
- fix(nbstore): fix readonly mode indexer status by @EYHN in #12353
- feat(server): trigger workspace embedding by @darkskygit in #12328
- fix(core): fix all docs group header by @EYHN in #12334
- refactor(nbstore): improve doc state management by @EYHN in #12359
- feat(core): add new doc button in new all docs header by @EYHN in #12390
- fix(server): skip empty docs by @darkskygit in #12396
- feat(core): embedding status tooltip by @yoyoyohamapi in #12382
- fix(core): correct card view properties display by @CatsJuice in #12401
- chore(mobile): enable ai button feature flag for canary only by @CatsJuice in #12377
- feat(mobile): move selfhost sign-in from menu to list by @CatsJuice in #12379
- fix(mobile): correct initial height for sign in layout by @CatsJuice in #12380
- refactor(core): indexer & embedding -> embedding by @yoyoyohamapi in #12387
- fix(editor): handle html content copied from google docs by @donteatfriedrice in #12383
- fix(editor): wrap inline elements in a p tag to avoid treated as paragraph block when importing html by @donteatfriedrice in #12389
- feat(core): show name tooltip for calendar event icon by @CatsJuice in #12362
- feat(core): duplicated calendar subscription notification by @CatsJuice in #12364
- chore(infra): add url test to playwright by @EYHN in #11795
- fix(editor): disable iframe border in code block preview by @Flrande in #12398
- feat(core): support draft filter by @EYHN in #12400
- feat(core): embedding progress by @yoyoyohamapi in #12367
- fix(editor): toc viewer no update after delete heading in edgeless mode by @L-Sun in #12411
- fix(editor): update color of deleted banner of surface-ref by @L-Sun in #12393
- feat(core): workspace embedding tracking by @yoyoyohamapi in #12409
- fix(core): chat block opens and throws an error by @akumatus in #12407
- refactor(core): ai input images display & max images count by @yoyoyohamapi in #12395
- fix(editor): subscribe docLinkClicked event for text renderer by @donteatfriedrice in #12406
- feat(editor): add feature flag for code block html preview by @Flrande in #12397
- fix(core): fix all docs filters internal state reset by @EYHN in #12412
- chore(server): add auto index batch size by @fengmk2 in #12391
- chore(server): support elasticsearch apiKey by @fengmk2 in #12405
- fix(server): process empty doc embedding by @darkskygit in #12417
- fix(server): embedding chunks primary key by @darkskygit in #12416
- feat(server): workspace embedding status count with files by @darkskygit in #12420
- feat(editor): use code block html preview in make it real by @Flrande in #12418
- chore(server): support disable indexer plugin by @fengmk2 in #12408
- feat(core): add status to pdf viewer by @fundon in #12349
- feat(core): workspace attachment uploading & error by @yoyoyohamapi in #12330
- fix(editor): incorrect position of code toolbar in safari and firefox by @L-Sun in #12434
- fix(editor): prevent cursor jumping to title when pressing backspace on the begin of edgeless note by @L-Sun in #12410
- fix(editor): should record edgeless connector mode by @L-Sun in #12426
- fix(editor): can not undo and redo of color of edgeless blocks by @L-Sun in #12414
- test(server): use mocker by @fengmk2 in #12435
- fix(editor): toggle switch style by @donteatfriedrice in #12436
- feat(server): refactor provider interface by @darkskygit in #11665
- chore: bump up rustc version to v1.87.0 by @renovate in #12314
- chore(admin): adjust import user style by @JimmFly in #12295
- fix(admin): user count is out of sync and search results are not cached in account management by @JimmFly in #11980
- fix(electron): packaging on windows by @pengx17 in #12443
- chore: bump up Lakr233/ChidoriMenu version to v3 by @renovate in #12372
- chore: bump up Node.js to v22.16.0 by @renovate in #12446
- chore: bump up Lakr233/SpringInterpolation version to from: "1.3.1" by @renovate in #12373
- fix(editor): math equation not being rendered correctly on electron client by @pengx17 in #12448
- fix(editor): opacity does not work by @zzj3720 in #12402
- fix(core): hidden not supported property in display menu by @EYHN in #12445
- chore: bump up @blocksuite/icons version to v2.2.15 by @renovate in #12394
- feat(core): new doc list for editing collection docs and rules by @CatsJuice in #12320
- fix(android): fix edge-to-edge by @aki-chang-dev in #12453
- feat(core): draft filter skip method step if there is only one method by @EYHN in #12457
- feat(core): enable new all docs by default by @EYHN in #12404
- feat(server): extract check params by @darkskygit in #12187
- chore: bump up all non-major npm dependencies by @renovate in #12185
- fix(editor): code block toolbar color by @Flrande in #12462
- feat(core): add gemini callout syntax highlighting by @akumatus in #12413
- feat(core): remove attachment tooltip by @yoyoyohamapi in #12467
- fix(editor): support single-tap brush by @L-Sun in #12461
- fix(editor): handle footnote reference immediately follow URLs when importing markdown by @donteatfriedrice in #12449
- feat(server): handle account deleting properly by @forehalo in #12399
- fix(server): should direct allocate seat if workspace is not team by @forehalo in #12469
- fix(server): avoid infinite loop in manticoresearch by @fengmk2 in #12460
- chore: cli to create self signed ca to dev with domain by @forehalo in #12466
- feat(server): update prompts by @darkskygit in #12471
- feat(server): better guard for embedding not support env by @darkskygit in #12472
- feat(core): add reload button to audio block by @fundon in #12451
- fix(core): in edgeless mode, an error occurs when asking AI questions without selecting any content by @yoyoyohamapi in #12437
- fix(editor): unify file size formatting method by @fundon in #12444
- feat(mobile): new docs list for mobile by @CatsJuice in #12329
- feat(core): support apple sign in by @forehalo in #12424
- fix(editor): can not select the block after undo the drag from canvas to note by @L-Sun in #12473
- feat(core): add more collection rules by @EYHN in #12458
New Contributors
- @congzhou09 made their first contribution in #12051
- @ClawCloud-Ron made their first contribution in #12280
Full Changelog: v0.22.0-canary.1...v0.22.0-canary.4