What's Changed
- chore: bump theme by @donteatfriedrice in #10358
- fix(core): remove tag page semicolon by @pengx17 in #10379
- fix(editor): turbo renderer stale frame lag on zooming by @doodlewind in #10376
- refactor(editor): optimize ai code structure by @Saul-Mirone in #10381
- chore: set base version to 0.20 by @forehalo in #10382
- fix(server): too much redundant updates events by @forehalo in #10383
- fix(core): version control session by @forehalo in #10384
- fix(server): include check of prerelease versions by @forehalo in #10386
- fix: drag connector and group element by @doouding in #10385
- fix: drag bookmark from note to edgeless by @doouding in #10389
- fix(nbstore): leave awareness when destroy by @EYHN in #10394
- fix(core): remove unnecessary doc loading by @EYHN in #10395
- chore(core): update free pricing plan description by @CatsJuice in #10393
- feat(editor): update footnote node style and config by @donteatfriedrice in #10392
- refactor(editor): modular custom specs by @Saul-Mirone in #10398
- refactor(editor): use doc title and id as snapshot file name by @donteatfriedrice in #10397
- fix(nbstore): fix doc sync logic by @EYHN in #10400
- feat(core): add resetSync button by @EYHN in #10404
- refactor(editor): optimize extension register and effects by @Saul-Mirone in #10406
- fix(editor): should check text length and stop event propagation when adding a link by @fundon in #10391
- refactor(editor): remove unused any convension by @Saul-Mirone in #10410
- fix(core): fix permission checks for export workspace by @JimmFly in #10401
- fix(core): reorder plan card action button conditions by @JimmFly in #10387
- fix(core): close popover after successful invite in member editor by @JimmFly in #10388
- fix(core): unused blobs query by @pengx17 in #10399
- fix(nbstore): local doc update lost by @EYHN in #10422
- perf(core): only full sync before exporting by @forehalo in #10408
- fix(core): add linked doc button by @EYHN in #10417
- feat(native): media capture by @Brooooooklyn in #9992
- chore(editor): bump @floating-ui/dom to 1.6.13 by @fundon in #10425
- fix(nbstore): reduce unnecessary sync by @EYHN in #10426
- fix(core): fallback when loading share page by @EYHN in #10428
- feat(native): doc loader for common native by @darkskygit in #9941
- fix(editor): discard stale layout bitmap in turbo renderer by @doodlewind in #10427
- fix(editor): improve string conversion logic for checkbox property by @zzj3720 in #10433
- fix(editor): affine preview root style by @donteatfriedrice in #10420
- fix(editor): remote cursor color inconsistency by @doodlewind in #10437
- fix(editor): table block supports parsing rich text by @zzj3720 in #10430
- fix(ios): fix magic link sign in by @EYHN in #10436
- refactor(editor): request refresh after finding stale bitmap by @doodlewind in #10438
- fix(core): fix doc url parsing with custom domain names by @fundon in #10444
- fix(core): correctly toggle visibility of starter-bar based on doc.isEmpty by @CatsJuice in #10439
- feat(server): adapt doc loader for server native by @darkskygit in #9942
- chore(editor): improve color formatting tests by @fundon in #10429
- refactor(editor): simplify renderer state by @doodlewind in #10441
- fix(editor): overflow of embed github card in edgeless note by @L-Sun in #10442
- feat(editor): schema extension by @Saul-Mirone in #10447
- fix(editor): list toggle position offset by @doodlewind in #10448
- feat(editor): add widget in viewUpdated slot by @Saul-Mirone in #10452
- refactor(editor): use transformer from store when possible by @Saul-Mirone in #10453
- refactor(editor): remove legacy service watcher by @Saul-Mirone in #10455
- fix(core): ai chat panel scrolling dizziness problem by @akumatus in #10458
- feat(editor): automatically hide canvas optimized blocks by @doodlewind in #10451
- fix(editor): ai chat panel textarea selection issue by @pengx17 in #10461
- refactor(editor): remove non null asserts in turbo renderer by @doodlewind in #10454
- fix(native): potential sharablecontent icon/name crash by @pengx17 in #10464
- fix(editor): handle resize in turbo renderer by @doodlewind in #10465
- feat(core): convert ai think tag to markdown divider by @akumatus in #10459
- fix(editor): toDraftModal supports flat data structures by @zzj3720 in #10466
- fix(editor): adjust black and white in shape text color palettes to pure black and pure white by @fundon in #10450
- fix(server): avoid global rejection when event handler errors by @forehalo in #10467
- fix(core): extract a scrollable text renderer fot ai panel by @donteatfriedrice in #10469
- feat(server): update search model by @darkskygit in #10475
- fix(editor): transform to draftmodel first when get snapshot by @Saul-Mirone in #10477
- chore: remove unused component imports and styles from text-renderer by @donteatfriedrice in #10478
- feat(editor): type safe draft model and transformer by @Saul-Mirone in #10486
- fix: add missing annotation to apps serviceAccount by @Brooooooklyn in #10484
- fix(core): always update session prompt before chat by @akumatus in #10483
- chore(editor): update page block telemetry by @L-Sun in #10487
- fix(server): use updowncounter by default by @forehalo in #10482
- feat(server): copilot session prompt query by @darkskygit in #10479
- fix: table collab by @Saul-Mirone in #10489
- feat(native): decode audio and mp3 encoder by @Brooooooklyn in #10490
- chore(server-native): cleanup unused test by @Brooooooklyn in #10493
- fix(native): split application & tappable application by @pengx17 in #10491
- fix(electron): hide tray for now by @pengx17 in #10498
- fix(core): at menu ux by @pengx17 in #10485
- test(editor): collab table test by @Saul-Mirone in #10506
- refactor(editor): perf optimization of flat data by @Saul-Mirone in #10494
- chore(core): remove capacitor from frontend/core by @L-Sun in #10500
- fix(core): editor blur unexpectedly when clicking blank area by @L-Sun in #10501
- fix(editor): invalidate turbo renderer on selection update by @doodlewind in #10499
- fix(editor): android keyboard can not be opened by @L-Sun in #10502
- chore: bump up all non-major dependencies by @renovate in #10363
- chore: Lock file maintenance by @renovate in #10041
- fix(editor): safari compat for lit host by @doodlewind in #10514
- chore: bump up oxlint version to v0.15.12 by @renovate in #10206
- fix(server): better copilot error handle by @darkskygit in #10509
- chore: bump up @googleapis/androidpublisher version to v24 by @renovate in #10518
- chore: bump up @blocksuite/icons version to v2.2.4 by @renovate in #10517
- fix(editor): range IndexSizeError on firefox by @doodlewind in #10519
- fix(editor): insertion position of new rows and columns is incorrect in table block by @zzj3720 in #10516
- feat(core): disable ai if value of sever copilot config is false by @akumatus in #10520
- feat(server): add workspace avatar support in doc reader by @fengmk2 in #10390
- fix(editor): patch android backspace key binding with beforeInput by @L-Sun in #10523
- fix(native): expose tapped audio stats by @pengx17 in #10524
- chore: bump up rustc version to v1.85.0 by @renovate in #10515
- chore: bump up @sentry/react version to v9 by @renovate in #10064
- chore: bump up Rust crate criterion2 to v3 by @renovate in #10527
- chore: bump up copy-webpack-plugin version to v13 by @renovate in #10530
- chore: bump up Rust crate thiserror to v2 by @renovate in #10529
- chore: bump up nestjs by @renovate in #10212
- chore: bump up react-markdown version to v10 by @renovate in #10532
- chore: bump up fast-xml-parser version to v5 by @renovate in #10531
- chore: bump up shiki version to v3 by @renovate in #10534
- chore: bump up sonner version to v2 by @renovate in #10535
- feat: prevent cycle emit in slot by @Saul-Mirone in #10539
- feat(editor): add embed option config extension by @Saul-Mirone in #10540
- refactor(editor): remove stable feature flags by @Saul-Mirone in #10547
- feat(editor): add block meta feature flag by @Saul-Mirone in #10548
- feat(editor): support zooming placeholder in turbo renderer by @doodlewind in #10504
- fix(electron): app menu about action by @pengx17 in #10445
- feat(editor): add user list services by @Saul-Mirone in #10555
- chore: unify Cargo deps versions by @Brooooooklyn in #10553
- ci: fix native server build by @Brooooooklyn in #10554
- fix(editor): database block create new row when group by rich-text by @zzj3720 in #10564
- feat(editor): add block meta service by @Saul-Mirone in #10561
- refactor(server): reduce server resource requests by @fengmk2 in #10568
- fix(server): throw s3 store error directly by @fengmk2 in #10572
- chore(editor): remove redundant fields in viewport by @doodlewind in #10569
- fix(editor): format text in code block by @Flrande in #10575
- fix(server): limit max batch pulled doc updates by @forehalo in #10578
- feat(core): support latex in ai text renderer by @donteatfriedrice in #10576
- fix(editor): code block toolbar float offset by @L-Sun in #10579
- fix(native): do not crash on bootstrap if API is not available by @Brooooooklyn in #10582
- chore(editor): merge clamp functions by @Saul-Mirone in #10577
- fix(server): reschedule busy doc merging by @forehalo in #10583
- fix(editor): zindex of frame child not updated by @L-Sun in #10580
- fix(core): only enable attachment preview for pdf by @pengx17 in #10584
- fix(core): add ai 7 day trial hint by @akumatus in #10587
- feat: optimize edgeless alignment by @doouding in #10435
- chore(editor): add feature flag entry for testing turbo renderer by @doodlewind in #10581
- fix(editor): onChange notification for flat model by @Saul-Mirone in #10589
- build: add link args to prevent dso unloading error on GNU targets by @Brooooooklyn in #10602
- fix(core): add ai math syntax in prompt by @akumatus in #10595
- fix(editor): should not select or open latex editor when readonly by @donteatfriedrice in #10601
- fix(core): positioning error in fixed floating submenu by @yoyoyohamapi in #10606
- refactor(editor): cleanup list icons by @Saul-Mirone in #10608
- refactor(editor): move figma squircle to shared by @Saul-Mirone in #10610
- refactor(editor): add gfx entry in bs global package by @Saul-Mirone in #10612
- fix(core): text style is not centered when chat-panel is wide by @akumatus in #10607
- refactor(editor): remove assertExists by @Saul-Mirone in #10615
- feat(server): add user existence check and optimize permission queries by @fengmk2 in #10402
- fix(web): add Array#toSpliced and Array#toReversed polyfill by @Brooooooklyn in #10614
- fix(core): fix table text content search by @EYHN in #10488
- feat(core): add clipper import interface by @EYHN in #10619
- fix(core): fix sign in background arts block user interaction by @EYHN in #10621
- fix: adapt new abort behavior by @darkskygit in #10622
- feat(server): add invalid oauth callback code error handling by @fengmk2 in #10603
- fix: snap line offset & check alignment candidates in real time by @doouding in #10605
- fix(web): add Array#toReversed polyfill by @Brooooooklyn in #10623
- refactor(server): permission by @forehalo in #10449
- feat: responsive chat-panel padding and request by @akumatus in #10620
- feat(editor): add callout block by @Flrande in #10563
- fix(core): db backlink infinite query issue by @pengx17 in #10628
- feat(core): add user list service for blocksuite by @EYHN in #10627
- refactor(editor): remove assert functions by @Saul-Mirone in #10629
- chore: adjust share menu styles by @JimmFly in #10630
- fix(core): add missing control of modifyDocDefaultRole track event by @JimmFly in #10625
- refactor(core): adjust sentry config by @EYHN in #10631
- refactor(server): merge PageModel into DocModel by @fengmk2 in #10592
- fix: prevent sentry from loading when telemetry is disabled by @hackeresq in #10543
- refactor(server): split HistoryModel from DocModel by @fengmk2 in #10604
- refactor(server): use DocModel to access doc meta by @fengmk2 in #10593
- feat(server): add blocked state to workspace docs by @fengmk2 in #10585
- chore(server): return parent id of sessions by @darkskygit in #10638
- feat(core): support create new template in starter-bar by @CatsJuice in #10570
- fix(core): can not clear chat-panel history by @akumatus in #10634
- fix(core): fix awareness send message repeatedly by @EYHN in #10643
- refactor(graphql): codegen by @forehalo in #10626
- chore: adjust discord link by @JimmFly in #10645
- refactor(core): replace ai icons by @yoyoyohamapi in #10637
- refactor(editor): replace debounce and throttle with lodash by @Saul-Mirone in #10639
- feat(core): doc level awareness by @EYHN in #10646
- chore(editor): remove log by @Flrande in #10650
- feat(editor): add toolbar registry extension by @fundon in #9572
- fix(core): missing clean up subscription by @akumatus in #10636
- fix(server): reuse params in retry by @darkskygit in #10653
- fix(editor): should shift toolbar to keep in view when selected area exceeds view by @fundon in #10642
- feat(core): awareness change event instead of update event by @EYHN in #10649
- test(web): rename e2e test name by @darkskygit in #10654
- refactor(editor): use lodash by @Saul-Mirone in #10657
- chore(editor): remove unexpected bottom padding of code block by @L-Sun in #10660
- fix(editor): circular dependencies by @fundon in #10661
- fix(core): runtime control of telemetry by @forehalo in #10663
- refactor(editor): separate lit and slot in global by @Saul-Mirone in #10666
- feat(server): use zod parse to impl input validation by @fengmk2 in #10566
- fix(editor): disable slash menu in callout by @Flrande in #10656
- feat(editor): life cycle ext by @Saul-Mirone in #10668
- refactor(core): standardize frontend error handling by @forehalo in #10667
- feat(editor): add loaded and disposed hook for store extension by @Saul-Mirone in #10669
- feat(server): add doc title and summary to database by @fengmk2 in #10505
- feat(server): add workspace name and avatarKey to database by @fengmk2 in #10513
- feat(server): notification system by @fengmk2 in #10053
- feat(server): get public user by id by @fengmk2 in #10434
- refactor(editor): adjust folder structure for slash menu extension by @L-Sun in #10588
- refactor(editor): add slash menu config extension entry by @L-Sun in #10641
- refactor(editor): replace icons with blocksuite/icons by @L-Sun in #10655
- refactor(editor): database slash menu config extension by @L-Sun in #10670
- refactor(editor): move focus block commands to blocksuite/shared by @L-Sun in #10671
- fix(editor): should update icon status when formatting the entire block text by @fundon in #10508
- fix(core): should invoke cleanup fn when ai sub item list is removed by @fundon in #10685
- feat(editor): rich text package by @Saul-Mirone in #10689
- refactor(editor): callout slash menu config extension by @L-Sun in #10672
- fix: block should not be selectable when dragged into note by @doouding in #10664
- refactor(editor): table slash menu config extension by @L-Sun in #10673
- refactor(editor): image slash menu config extension by @L-Sun in #10674
- refactor(editor): bookmark slash menu config extension by @L-Sun in #10675
- refactor(editor): attachment slash menu config extension by @L-Sun in #10676
- fix(server): correct "Administrators" typo in permissions by @fengmk2 in #10690
- chore: update project name by @hwangdev97 in #10658
- feat(core): add public user service by @EYHN in #10695
- refactor(editor): latex slash menu config extension by @L-Sun in #10677
- refactor(editor): note slash menu config extension by @L-Sun in #10678
- refactor(editor): embed slash menu config extension by @L-Sun in #10679
- fix(editor): improve backspace ux for callout block by @Flrande in #10696
- refactor(editor): ai slash menu config extension by @L-Sun in #10680
- refactor(editor): surface-ref slash menu config extension by @L-Sun in #10681
- feat(core): support removing journal template from right sidebar by @CatsJuice in #10571
- refactor(editor): linked doc slash menu config extension by @L-Sun in #10682
- refactor(editor): code block slash menu config extension by @L-Sun in #10683
- refactor(editor): data view slash menu config extension by @L-Sun in #10684
- feat(editor): allow undefined default props by @Saul-Mirone in #10701
- perf(editor): lazy DOM update with idle state in gfx viewport by @doodlewind in #10624
- chore(editor): reorg packages by @Saul-Mirone in #10702
- fix(editor): should show toolbar after mouse is released by @fundon in #10698
- chore: bump up all non-major dependencies by @renovate in #10521
- chore: update issue templates by @forehalo in #10688
- chore: bump up @types/node version to v22.13.10 by @renovate in #10704
- feat(server): improve gql measure by @darkskygit in #10706
- chore: bump up all non-major dependencies - autoclosed by @renovate in #10705
- refactor(editor): remove blocks package by @Saul-Mirone in #10708
- chore: bump up electron version to v35 by @renovate in #10600
- chore: bump up oxlint version to v0.15.13 by @renovate in #10591
- chore: Lock file maintenance by @renovate in #10552
- refactor(editor): orgnize exports by @Saul-Mirone in #10709
- chore: bump up all non-major dependencies by @renovate in #10713
- feat(editor): add viewport element service by @Saul-Mirone in #10727
- fix(editor): repeated instantiation of frame preview editor by @L-Sun in #10729
- refactor(editor): move frame related component to frame panel by @Saul-Mirone in #10735
- fix(editor): incorrect text position in turbo renderer by @doodlewind in #10728
- fix: align with only one element at a time by @doouding in #10739
- refactor(editor): gfx text package by @Saul-Mirone in #10738
- refactor(editor): move getTooltipWithShortcut to affine-tooltip-content-with-shortcut by @fundon in #10743
- chore(editor): update slash menu tooltips by @L-Sun in #10746
- fix(editor): error rotation of highlight element in frame by @L-Sun in #10737
- chore(editor): keep root slash menu open when pressing left arrow left by @L-Sun in #10730
- refactor(editor): implement uni-component in AFFiNE by @zzj3720 in #10747
- refactor(editor): remove edit view of database block properties by @zzj3720 in #10748
- refactor(editor): add schema for value of database block properties by @zzj3720 in #10749
- fix(editor): missing re-subscription for slots on store by @Saul-Mirone in #10750
- refactor(editor): add gfx turbo renderer package by @doodlewind in #10745
- feat(core): add notification list by @EYHN in #10480
- refactor(editor): move color panel into color picker by @fundon in #10758
- chore: bump up oxlint version to v0.15.14 by @renovate in #10759
- fix(editor): clip content within menu by @fundon in #10764
- fix(editor): horizontal scroll bar missing in code block by @L-Sun in #10742
- ci: add missing perplexity-key in copilot e2e action by @Brooooooklyn in #10772
- feat(editor): replace slot with rxjs subject by @Saul-Mirone in #10768
- feat(server): ban account by @forehalo in #10761
- feat(server): import users by @forehalo in #10762
- feat(server): allow check available version to upgrade by @forehalo in #10767
- feat(server): support making doc private in workspace by @forehalo in #10744
- fix(server): nullable value for parent id by @darkskygit in #10725
- chore(server): update gql schema by @forehalo in #10775
- feat(core): add blocksuite writer info service by @EYHN in #10754
- refactor(editor): simplify color picker by @fundon in #10776
- refactor(server): improve oauth login flow by @fengmk2 in #10648
- refactor(server): improve magic link login flow by @fengmk2 in #10736
- chore(core): extend workflow timeout by @darkskygit in #10760
- fix(core): assert app schema url on open-app by @fengmk2 in #10687
- refactor(editor): add runtime type checks to database cell values by @zzj3720 in #10770
- fix(core): handle Content-Type with charset in fetch error handling by @fengmk2 in #10777
- fix(core): wrong top margin of local workspace hint in setting panel by @forehalo in #10782
- fix(server): only return workspace user fields by @fengmk2 in #10700
- feat(server): update deploy config for context by @darkskygit in #10431
- fix(editor): should directly return the sub-action content if it exists by @fundon in #10778
- feat(core): adjust web clipper page by @EYHN in #10779
New Contributors
- @yoyoyohamapi made their first contribution in #10606
- @hackeresq made their first contribution in #10543
Full Changelog: v0.20.0...v0.21.0-canary.1